各位大佬,python 的 concurrent.futures.ThreadPoolExecutor 下的 map 返回值是按提交顺序来的吗?
我之前一直以为用 map 的话 返回值是按提交的顺序来的,但今天看 map 对应的代码,注释是这样写的
Returns: An iterator equivalent to: map(func, *iterables) but the calls may be evaluated out-of-order.
这个意思是可能会乱序,并不能保证顺序返回吗?
如果 map 不能保证顺序返回, 但多线程的时候又希望按顺序返回,该怎么办呢?还望大佬们赐教
1
echoless 2023-02-07 19:57:27 +08:00 1
|
2
wuwukai007 2023-02-07 19:57:36 +08:00 1
jobs = [pool.submit(fn,i) for i in range(10)]
[i.result() for i in jobs] |
3
ClericPy 2023-02-07 20:14:13 +08:00 1
结果不乱, 执行乱
|
4
julyclyde 2023-02-08 10:40:18 +08:00
如果你希望按顺序返回
那是你的需求有问题 |
5
chr666 2023-02-20 13:34:17 +08:00
传个 id 进去,最后返回时候排个序不就行了
|