Skip to main content
 首页 » 编程设计

python之使用 multiprocessing.Pool.map() 时是否保证按顺序检索结果

2024年11月24日28wayfarer

当使用 multiprocessing.Pool.map() 时,即使 func() 需要不同的时间来完成,结果是否保证按顺序出现? (即第二个 worker 可以在第一个 worker 之前完成,等等...)

def func(arg): 
    # stuff that takes random time to complete ... 
    return arg 
 
args = [1, 2, 3, 4] 
pool = mp.Pool(processes=4) 
results = pool.map(func, args) 
print(results) 

在这个例子中,是否保证结果打印为[1, 2, 3, 4]?如果没有,我如何才能确保发生这种情况?

请您参考如下方法:

是的,使用 multiprocessing.Pool.map 方法,结果将始终遵循给定 iterable 中相应项的顺序,这就是为什么此方法会阻塞,直到所有子进程完成。