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