multiprocessing.Pool не дожидаться завершения процесса и проверка существования процесса
рабочее окружение tkinter, внем запущен таймер который выводится в окно, и параллельно должен происходить другой процесс, но окно зависает и плюс не могу проверить жив ли процесс через какое-то время.
from tkinter import *
from multiprocessing import Pool
from functools import partial
from cheker import che
class main(Frame):
def __init__(self, master):
super().__init__(master)
root.title('test')
self.lbltimer = 3
self.lblTime = Label(root, text='Timer: '+str(self.lbltimer)+' min')
self.lblTime.grid(row=0, column=0, sticky=W + E, padx=(5, 5), pady=(5, 5))
self.starts()
def starts(self):
self.temp = self.lbltimer * 60
self.lblTime.config(text='Timer: '+str(round((self.temp/60),2))+' min')
root.update()
self.after(1000, self.timers)
self.pool = Pool(1)
self.ress = self.pool.starmap(che, zip('a', 'b')) #как сделать чтоб процесс не зависал? (функция вызываемая в другом скрипте, вычисления)
#self.pool.close()
#self.pool.join()
self.after(1000, self.waiters)
def timers(self):
self.temp -= 1
self.lblTime.config(text='Timer: ' + str(round((self.temp / 60), 2)) + ' min')
root.update()
if self.temp > 0:
self.after(1000, self.timers)
else:
self.lblTime.config(text='Timer: 0 - wait')
root.update()
def waiters(self):
if self.pool.is_alive(): #как проверить живой ли процесс?
self.after(5000, self.waiters)
else:
res = ''
for re in self.ress:
res += re+'\n'
print(res)
мне нужен асинхронный процесс, который даст вывод результата, но при этом не трогать вызываемый другой скрипт (не менять его), в нем написано возвращение результата через return. По этому я пробую Pool, но процесс дает зависание процессов в tkinter и не знаю как проверить когда процесс завершился, чтобы я мог продолжить работу с результатом.