2015-05-19 38 views

回答

8

你想用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!') 

编辑:

要使用join with pools

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") 
+0

谢谢,但我问的是池方法:在您让多为自动启动的过程。你怎么能做到这一点与池“加入”的伎俩? –

+0

好的更新的答案。你只需在'pool'实例上调用'join()'。 –

+0

谢谢。它的工作原理 –