2016-11-15 151 views
0

我有这样的代码:为什么多处理不起作用?

import multiprocessing 


def worker(): 
    print 'Worker' 
    return 

if __name__ == '__main__': 
    jobs = [] 
    for i in range(5): 
     p = multiprocessing.Process(target=worker) 
     jobs.append(p) 
     p.start() 

无论出于何种原因,它打印“工人”两次,然后停止。有谁知道为什么?我究竟做错了什么?

+0

测试在2.7.10和3.5.2 ....我的作品,你能提供更多的细节吗?也许版本号,操作系统等等... – MooingRawr

+0

它为我打印五次。 Python 2.7。也许是环境问题? – DejaVuSansMono

+0

这是不可重现的。 –

回答

2

在定义的“核心”值上启动Python中的多处理任务时,最好选择创建一个池并启动该池内的进程。

pool = multiprocessing.Pool() 
for i in range(5): 
    pool.apply_async(worker) 
pool.close() 

但是,如果你喜欢这样做对你的方式,我认为你必须添加p.join()

import multiprocessing 


def worker(): 
    print 'Worker' 
    return 

if __name__ == '__main__': 
    jobs = [] 
    for i in range(5): 
     p = multiprocessing.Process(target=worker) 
     jobs.append(p) 
     p.start() 
     p.join() 
相关问题