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

使用concurrent.futures.ThreadPoolExecutor时触发TypeError问题求助

ThreadPoolExecutor提交任务触发TypeError问题解答

问题原因

ThreadPoolExecutor.submit()方法的参数传递规则使用错误,是本次报错的直接诱因:
submit方法的标准调用格式为 submit(目标函数, *位置参数, **关键字参数),目标函数的多个入参需要直接按顺序跟在函数名后传递,不需要手动封装为元组。
你代码中的写法是将所有入参打包为一个整体元组传入,相当于仅给thread_func传递了1个元组类型的参数,而你的thread_func本身设计需要接收5个独立的位置参数,参数个数不匹配就会触发TypeError。

修复代码

将提交任务的行修改为如下写法即可:

tasks.append(thread_pool.submit(thread_func, url, url_pool, dataDB, dp, data_catch_info))

额外优化建议

  • 可以使用ThreadPoolExecutor的上下文管理器写法,无需手动销毁线程池,资源释放更安全:
    with ThreadPoolExecutor(max_workers=2) as thread_pool:
        # 任务提交逻辑写在上下文内
    
  • 排查任务报错时可以遍历Future对象获取具体异常信息,定位问题更高效:
    for future in tasks:
        try:
            future.result()
        except Exception as e:
            print(f"任务异常详情:{e}")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:03