Как создать приложение tkinter, использующее многопроцессорный пул / процесс - PullRequest
0 голосов
/ 15 февраля 2020

Как я могу создать приложение tkinter, которое использует многопроцессорный пул / процесс? И чтобы tkinter не зависал во время работы процессов.

Я хочу создать веб-скребок, используя Python Selenium, мультипроцессорный пул / процесс и tkinter как GUI. Ниже я оставляю пример кода для приложения и код для разбора. Как можно совместить, чтобы GUI не зависало?

class App():

def root_app(self):
    self.root = Tk()
    self.root.geometry('900x600+100+50')
    self.root.title('RP парсер')
    self.root.resizable(False, False)
    bc = "#5A94C4"
    self.root.configure(background = bc)
    self.root.protocol('WM_DELETE_WINDOW', self.window_deleted)

    start_label = Label(self.root, text='Начало:', width=6, height=2, bg= bc , fg='white', font='Arial 16')
    start_label.place(x=60, y=25)

    self.start_row = Entry(self.root, bd=1, width=6, font='Arial 12')
    self.start_row.place(x=220, y=40)

    end_label = Label(self.root, text='Конец:', width=6, height=2, bg= bc , fg='white', font='Arial 16')
    end_label.place(x=54, y=60)

    self.end_row = Entry(self.root, bd=1, width=6, font='Arial 12')
    self.end_row.place(x=220, y=75)


    proc_label = Label(self.root, text='Кол-во потоков:', width=12, height=1, bg= bc , fg='white', font='Arial 16')
    proc_label.place(x=60, y=105)
    self.proc_input = Entry(self.root, bd=1, width=6, font='Arial 12')
    self.proc_input.place(x=220, y=110)

    self.site_button = Button(self.root, text='Начать парсинг', relief="flat",  font='Arial 13', bg='#2d4f78', fg='white', width=23, height=1, command=self.question)
    self.site_button.place(x=60, y=150)

    self.result_label = Label(self.root, text='Результаты:', width=12, height=1, bg="#3E729E" , fg='white', font='Arial 16')
    self.result_label.place(x=350, y=10)
    self.result_text=Text(self.root,height=23,width=48,font='Arial 14',wrap=WORD)
    self.result_text.place(x=350, y=40)

    self.clear_button = Button(self.root, text='Очистить лог', font='Arial 13', relief="flat", bg='#2d4f78', fg='white', width=28, height=1) # command=self.clear_text)
    self.clear_button.place(x=350, y=550)

    export_button = Button(self.root, text='Экспорт в Эксель', font='Arial 13', relief="flat", bg='#2d4f78', fg='white', width=30, height=1) #command=self.write_table)
    export_button.place(x=610, y=550)

    self.scrollbar = Scrollbar(self.root)
    self.scrollbar.pack(side='right', fill='y')
    self.scrollbar['command'] = self.result_text.yview
    self.result_text['yscrollcommand'] = self.scrollbar.set


    self.root.mainloop()

    def question(self):
        f = open('date.txt', 'w')
        f.close()

        answer = mb.askyesno(title="Continue", message='Continue?')
        if answer == True:    
            start_scraping()

А:

    def start_scraping():
        options = webdriver.ChromeOptions()
        options.add_argument('log-level=3')
        options.add_argument('headless')
        driver = webdriver.Chrome(chrome_options=options)
        source = driver.page_source
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...