首页 > 后端开发 > Python教程 > 为什么我的线程在打印语句之前执行?

为什么我的线程在打印语句之前执行?

Barbara Streisand
发布: 2024-11-12 17:58:02
原创
964 人浏览过

Why Does My Thread Execute Before the Print Statement?

线程提前执行

尽管没有调用t1.start(),为什么t1在后续打印之前就开始执行

分析

由于Python默认的参数传递语义,t1的目标定义中self.read()后面存在括号会触发过早执行。通过省略括号,self.read 将作为函数引用而不是执行结果传递。

解决方案

为了确保正确执行,请删除尾随括号from self.read():

# Remove parentheses to pass a function reference
t1 = threading.Thread(target=self.read)
t1.start()
print("something")
登录后复制

对于需要参数的目标,使用 args 和 kwargs 或lambda 函数:

# Using args and kwargs (preferred)
t1 = threading.Thread(target=f, args=(a, b), kwargs={'x': c})

# Using a lambda function (watch for variable reassignment issues)
t1 = threading.Thread(target=lambda: f(a, b, x=c))
登录后复制

以上是为什么我的线程在打印语句之前执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板