【发布时间】:2023-01-30 21:00:55
【问题描述】:
我想创建一个在 ThreadPoolExecutor 上运行的期货列表,然后在它们完成评估后立即显示它们中的每一个。
预期结果是:每 3 秒打印 0、2、6、12 中的每一个。
但是,我在 12 秒后才得到结果,并且数字是模拟显示的。
from concurrent.futures import ThreadPoolExecutor
import time
def fnc(x, y):
time.sleep(3)
return x*y
futures = []
with ThreadPoolExecutor(max_workers=1) as executor:
for i in range(0, 4):
print(f"Submitting {i}")
futures += [executor.submit(fnc, i, i+1)]
for f in futures:
print(f.result())
【问题讨论】:
-
你不打印结果直到全部线程已终止——即在 ThreadPoolExecutor 工作管理器代码块之外
-
明白了,谢谢! @Pingu
标签: python python-3.x python-multiprocessing python-multithreading