我正在用python编写GUI。
在某些时候我想加快一些耗时的时间,所以我使用了这样的多处理:
resultsQueue = multiprocessing.Queue()
p1 = multiprocessing.Process(target=proc1, args=(some_arguments, resultsQueue))
p2 = multiprocessing.Process(target=proc2, args=(some_arguments, resultsQueue))
p3 = multiprocessing.Process(target=proc3, args=(some_arguments, resultsQueue))
p4 = multiprocessing.Process(target=proc4, args=(some_arguments, resultsQueue))
p5 = multiprocessing.Process(target=proc5, args=(some_arguments, resultsQueue))
p1.daemon = True
p2.daemon = True
p3.daemon = True
p4.daemon = True
p5.daemon = True
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
self.processes += [p1]
self.processes += [p2]
self.processes += [p3]
self.processes += [p4]
self.processes += [p5]
for p in self.processes:
p.join()
基本上,每个进程都包含一个大循环,进行一些计算并将结果放入resultsQueue,如下所示:
def proc1(some_arguments, resultsQueue):
#the long loop here
for i in xrange(....):
#do some calculations
resultsQueue.put(the_result)
resultsQueue.put("Done")
正如你所看到的,我试图在每个过程结束时添加一个“标志”,“完成”。
但是,我被卡住了,因为我不知道如何监控主GUI中的进程以显示进度条,或显示消息等,同时进程逐个结束....