
各位大佬,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 |
2 wuwukai007 2023-02-07 19:57:36 +08:00 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 结果不乱, 执行乱 |
4 julyclyde 2023-02-08 10:40:18 +08:00 如果你希望按顺序返回 那是你的需求有问题 |
5 chr666 2023-02-20 13:34:17 +08:00 传个 id 进去,最后返回时候排个序不就行了 |