我在python中运行一个多处理池,在那里我有~2000个任务,被映射到池中的24个工作者。 每个任务都基于一些数据分析和Web服务创建一个文件。
我希望在池中的所有任务完成后运行新任务。如何判断池中的所有进程何时完成?
答案 0 :(得分:10)
您想使用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")