You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ThreadPoolExecutor生成的Future未按预期实时输出结果问题求助

问题分析与解决

你的代码存在两个关键问题导致不符合预期:

  1. 先批量提交所有任务,再统一遍历调用result(),这意味着必须等所有任务执行完毕(4×3=12秒)才会开始打印结果
  2. 线程池max_workers=1决定了任务是串行执行的,但原代码的遍历逻辑放大了延迟问题

要实现任务完成一个就立即打印结果的效果,需要使用concurrent.futures.as_completed()函数,它会在每个Future执行完成时立即返回该Future对象。

修改后的代码如下:

from concurrent.futures import ThreadPoolExecutor, as_completed
import time

def fnc(x, y):
    time.sleep(3)
    return x*y

with ThreadPoolExecutor(max_workers=1) as executor:
    futures = []
    for i in range(0, 4):
        print(f"Submitting {i}")
        futures.append(executor.submit(fnc, i, i+1))
    
    # 实时获取已完成的任务结果
    for future in as_completed(futures):
        print(future.result())

这段代码会按照任务完成的顺序(因为串行执行,就是提交顺序)每隔3秒输出一个结果,完全符合你的预期。

内容的提问来源于stack exchange,提问作者gamerz123123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:37:45