0
我想并行运行不同的函数(foo,bar和baz),然后按照它们的顺序获取每个函数返回的值调用。并行运行不同函数并按特定顺序获取返回值
我尝试了类似下面的代码,但出于某种原因,它在Windows上永远循环。使用例如multiprocessing
可以实现吗?请注意,这些函数预期将参数作为同一事物(即数据)。
注意:下面的代码是针对Python 3的,我想要一个等效的Python 2.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)
我忘了提,给定的代码就是Python 3(和在Windows上不起作用),但我想要一个与Python 2.7一起工作的代码,因为它是我需要使用的。 – eLearner
然后看看这个页面:https://pymotw.com/2/multiprocessing/communication.html – Muatik
我更新了python 2.7的答案 – Muatik