首页 >后端开发 >Python教程 >为什么我的 Python 线程在我显式启动之前就执行了?

为什么我的 Python 线程在我显式启动之前就执行了?

Susan Sarandon
Susan Sarandon原创
2024-11-10 08:03:02674浏览

Why does my Python thread execute before I explicitly start it?

显式调用之前的线程执行

Python 的多线程模块允许使用 Thread 对象并行执行代码。但是,创建和配置线程时可能会出现异常行为。

将函数传递给带有尾随括号的线程目标参数时会出现问题,如下所示:

t1 = threading.Thread(target=self.read())

此行为源于这样的误解:调用 target=self.read() 会将 self.read() 的运行分配给线程。不幸的是,这是不正确的。通过附加括号,该函数将立即被调用,并且其返回值将被指定为目标。对于 Thread 对象,它期望接收一个函数作为目标。

要解决此问题,只需从目标参数中删除括号并显式调用线程的 start() 方法:

t1 = threading.Thread(target=self.read)
t1.start()

现在,self.read() 将在新创建的线程中无限期地运行,允许程序继续并打印“某些内容”。此修改可确保函数被正确指定为目标并且不会过早执行。

以上是为什么我的 Python 线程在我显式启动之前就执行了?的详细内容。更多信息请关注PHP中文网其他相关文章!

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