监视进程在队列中写入元素

时间:2014-07-14 13:30:45

标签: python queue multiprocessing monitoring

我正在用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中的进程以显示进度条,或显示消息等,同时进程逐个结束....

0 个答案:

没有答案