在python多处理中获取imap_unordered的当前输出索引的最佳方法是什么

时间:2016-01-11 19:44:54

标签: python multiprocessing

在python imap_unordered中获取multiprocessing的当前输出索引的最佳方法是什么?

1 个答案:

答案 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)