【发布时间】:2021-04-21 04:27:13
【问题描述】:
from concurrent.futures import ThreadPoolExecutor, as_completed
def add_one(number, n):
return number + 1 + n
def process():
all_numbers = []
for i in range(0, 10):
all_numbers.append(i)
threads = []
all_results = []
with ThreadPoolExecutor(max_workers=10) as executor:
for number in all_numbers:
threads.append(executor.submit(add_one, number))
for index, task in enumerate(as_completed(threads)):
result = task.result()
#print(result)
all_results.append(result)
for index, result in enumerate(all_results):
print(result)
process()
如果我设置 max_works=1,它会从 1 到 10 依次打印出来;如果我设置 max_workers = 10,则顺序可能是随机的:
5
3
10
7
1
8
6
2
4
9
如本例中使用 ThreadPoolExecutor 处理项目列表时如何保持输入的原始顺序?
【问题讨论】: