当使用 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 中相应项的顺序,这就是为什么此方法会阻塞,直到所有子进程完成。
