2024-06-11 04:55:53 发布
网友
阅读multiprocessing.Pool doc我了解到map_async和apply_async是map和appy的两个版本,它们应该更快,但不能保证输入的处理顺序与提供的顺序相同。你知道吗
map_async
apply_async
map
appy
但是,我不明白调用multiprocessing.pool.AsyncResult.get()时,结果是“重新排序”以匹配输入顺序,还是按处理顺序返回?你知道吗
multiprocessing.pool.AsyncResult.get()
是,退货订单将与输入订单相同。唯一的区别是异步方法不阻止父级中的MainThread,您必须显式地.get()结果。.map()和.map_async()都在引擎盖下调用相同的低级方法._map_async()。你知道吗
MainThread
.get()
.map()
.map_async()
._map_async()
请注意,处理顺序和退货顺序是两件不同的事情。处理顺序不受chunking的保证和影响。你知道吗
对于.apply_async(),您将得到您正在调用.get()的特定AsyncResult-对象的结果。你知道吗
.apply_async()
AsyncResult
在执行下面的测试时,似乎在调用get()时恢复了顺序。然而,正如Right Leg所说,我在文件中找不到任何提及。因此,我不会接受这个答案,除非这不是一个事实证明,而不是一个测试
get()
import multiprocessing as mp from time import sleep def func(i): if i == 1: sleep(3) return i**2 if __name__=='__main__': with mp.Pool(mp.cpu_count()) as pool: res = pool.map_async(func, range(10)).get() print(res)
是,退货订单将与输入订单相同。唯一的区别是异步方法不阻止父级中的
MainThread
,您必须显式地.get()
结果。.map()
和.map_async()
都在引擎盖下调用相同的低级方法._map_async()
。你知道吗请注意,处理顺序和退货顺序是两件不同的事情。处理顺序不受chunking的保证和影响。你知道吗
对于
.apply_async()
,您将得到您正在调用.get()
的特定AsyncResult
-对象的结果。你知道吗在执行下面的测试时,似乎在调用
get()
时恢复了顺序。然而,正如Right Leg所说,我在文件中找不到任何提及。因此,我不会接受这个答案,除非这不是一个事实证明,而不是一个测试相关问题 更多 >
编程相关推荐