2016-01-20 79 views
0

我运行了下面的代码,但它没有输出任何东西。我甚至包括了参数[i]但没有。Muliprocessing模块不能按预期的方式工作:不输出

import multiprocessing 

def worker(): 
    """worker function""" 
    print 'Worker' 
    return 

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

    worker, 
    worker, 
    worker, 
    worker, 
    worker 

感谢您的建议。

回答

0

我无法重现它,它按预期工作。这可能是因为脚本运行速度太快。在该过程有机会写入标准输出之前,程序到达结尾,因此无法看到结果。

等待工作完成。

for i in jobs: i.join() 
+0

它只是无尽的运行。 – user2274879

0

我刚刚找到了解决方案。这些项目必须是put in a q,然后您从q中一个接一个地依次输入get。请参阅下面的解决方案,可能会有更好的解决方案,但这种方式完美无缺

from multiprocessing import Process, Queue 
def worker(q): 
    """worker function""" 
    q.put('Worker') 

q=Queue()  
jobs=[] 
if __name__ == '__main__': 
    for i in range(5): 
     p = Process(target=worker, args=(q,)) 
     p.start() 
     print q.get() 
     p.join() 

我希望能找到其他解决方案。

相关问题