我运行了以下代码,但它没有输出任何内容。我甚至包括了论据[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
感谢您的建议。
答案 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()
我希望找到其他解决方案。