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

Python线程传参:使用args与直接传参的区别

Python线程传参:args方式与直接传参的核心区别

1. 函数执行时机完全不同

  • 使用args参数:threading.Thread(target=test, args=("Test",))中,target接收的是函数对象test,不会立刻执行函数。只有当调用thread.start()时,新线程才会调用test并传入args里的参数。
  • 直接传参:threading.Thread(target=test("Test"))会在主线程创建线程对象的瞬间,直接执行test("Test"),然后把函数的返回值(这里test没有return,所以是None)赋值给target。后续调用thread.start()时,线程会尝试调用None,直接抛出TypeError: 'NoneType' object is not callable错误。

2. 执行线程的差异

  • args方式:test函数的逻辑在新创建的子线程中运行,这才是多线程的正确用法,能实现并行执行的效果。
  • 直接传参方式:test函数是在主线程里执行的,子线程根本没有运行目标函数,完全失去了多线程的意义。

3. 参数传递的合理性

  • args是线程模块设计的标准传参方式,支持传递多个参数(比如args=(val1, val2, val3)),能确保参数在子线程启动时正确传递给目标函数。
  • 直接传参的方式属于误用:不仅无法让子线程执行目标函数,还会提前在主线程触发函数的逻辑(如果函数有副作用,比如修改全局变量、IO操作,都会直接在主线程执行)。

内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:01:03