多处理模块未按预期运行:未输出

时间:2016-01-20 15:59:42

标签: python python-multiprocessing

我运行了以下代码,但它没有输出任何内容。我甚至包括了论据[i],但没有。

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

感谢您的建议。

2 个答案:

答案 0 :(得分:0)

我无法重现它,它按预期工作。这可能是因为脚本运行得太快。在进程获得写入stdout的机会之前,程序到此结束,你无法看到结果。

等待工作完成。

for i in jobs: i.join()

答案 1 :(得分:0)

我刚刚找到了解决方案。这些项目必须为put in a q,然后您get一个接一个地q。请参阅下面的解决方案,可能有更好的解决方案,但这非常有效。

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()

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