3
我正在python中运行一个多处理池,在那里我有〜2000个任务,被映射到有24个池的工作人员。每个任务都基于一些数据分析和Web服务创建一个文件。python多处理池:我如何知道池中的所有工作人员何时完成?
当池中的所有任务都完成时,我想运行一个新任务。我如何知道池中的所有进程何时完成?
我正在python中运行一个多处理池,在那里我有〜2000个任务,被映射到有24个池的工作人员。每个任务都基于一些数据分析和Web服务创建一个文件。python多处理池:我如何知道池中的所有工作人员何时完成?
当池中的所有任务都完成时,我想运行一个新任务。我如何知道池中的所有进程何时完成?
你想用the join
method,从向前移动,直到所有的子进程暂停主进程线程结束:
阻塞调用线程,直到其join()方法的过程被称为终止,或直到可选超时发生。
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
processes = []
for i in range(10):
p = Process(target=f, args=('bob',))
processes.append(p)
for p in processes:
p.start()
p.join()
# only get here once all processes have finished.
print('finished!')
编辑:
pool = Pool(processes=4) # start 4 worker processes
result = pool.apply_async(f, (10,)) # do some work
pool.close()
pool.join() # block at this line until all processes are done
print("completed")
谢谢,但我问的是池方法:在您让多为自动启动的过程。你怎么能做到这一点与池“加入”的伎俩? –
好的更新的答案。你只需在'pool'实例上调用'join()'。 –
谢谢。它的工作原理 –