我试图在几个进程上传播一个循环并打印每个迭代的索引作为其处理。我得到的是什么,因为这是我得到的。 我试过了
import multiprocessing
import os
def f(key_value):
print (key_value)
if __name__ == '__main__':
pool = multiprocessing.Pool(2)
for _ in pool.imap(f, range(100)):
pass
以及
from multiprocessing import Pool
def th(ur):
print (ur)
if __name__ == '__main__':
pool = Pool(2)
results = pool.map(th,range(100))
pool.close()
pool.join()
答案 0 :(得分:1)
问题是主要过程对工人的速度。
主进程在处理结束前退出。 (不使用.close
.join
时)
此外,在tasklet函数中错过了返回值。
以下代码按预期工作:
import multiprocessing
def f(tuple_value):
index, value = tuple_value
print("Index: {} Value: {}".format(index, value))
return True
if __name__ == '__main__':
pool = multiprocessing.Pool(2)
pool.imap(f, enumerate(range(100)))
pool.close()
pool.join()
Python 3.x和2.7中的输出:
$ python3 test.py
Index: 0 Value: 0
Index: 1 Value: 1
Index: 2 Value: 2
Index: 3 Value: 3
[...]
答案 1 :(得分:0)
我测试了你的第二个例子并且它有效(除了一些缩进问题)。在Windows 10 64bit上使用python 2.7.13进行测试
我还添加了一些随机等待时间,以验证异步打印。
{{1}}