我希望并行运行不同的函数(foo、bar和baz),然后按调用顺序获取每个函数返回的值。在
我尝试了类似下面的代码,但由于某些原因,它在Windows上永远循环。是否可以使用例如multiprocessing
来实现这一点?请注意,这些函数应该以相同的事物(即数据)作为参数。在
注意:下面的代码是针对Python3的,我需要一个Python2.7的等效代码,因为我需要使用它。在
from concurrent.futures import ProcessPoolExecutor
from operator import itemgetter
def foo(data):
return "foo"
def bar(data):
return "bar"
def baz(data):
return "baz"
work = [foo, bar, baz]
data = [1,2,3,4,5]
results = []
with ProcessPoolExecutor(max_workers=4) as pool:
for i, work_item in enumerate(work):
future = pool.submit(work_item, data)
def callback(ret):
results.append((i, ret.result()))
future.add_done_callback(callback)
results.sort(key=itemgetter(0))
print(results)
我对你的回调方法做了一点改变,我猜是你想要的。检查结果:
结果如下:
^{pr2}$我用python3在macosx上运行这个代码。我希望有帮助。在
对于python 2.7,可以尝试如下操作:
^{3}$结果是:
How can I recover the return value of a function passed to multiprocessing.Process?
相关问题 更多 >
编程相关推荐