在python imap_unordered
中获取multiprocessing
的当前输出索引的最佳方法是什么?
答案 0 :(得分:3)
对目标函数的参数序列使用enumerate()
,并且除了结果之外还要更改函数以返回索引,或者创建一个执行此操作的包装函数。
简单示例:
from multiprocessing import Pool
import time
import random
def func(args):
# real target function
time.sleep(random.random())
return args ** 2
def wrapper(args):
idx, args = args
return (idx, func(args))
if __name__ == '__main__':
pool = Pool(4)
args = range(10) # sample args
results = pool.imap_unordered(wrapper, enumerate(args))
for idx, result in results:
print(idx, result)