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

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

Barbara Streisand
Barbara Streisand原创
2024-11-12 17:58:02887浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn