显式调用之前的线程执行
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中文网其他相关文章!