线程在调用Thread.start之前开始运行

Tyl*_*den 17 python multithreading python-multithreading

t1=threading.Thread(target=self.read())
print "something"
t2=threading.Thread(target=self.runChecks(), args=(self))
Run Code Online (Sandbox Code Playgroud)

self.read无限期地运行,所以程序将无法到达该print行.没有打电话t1.start()怎么可能呢?(即使我打电话给它,它会开始运行并继续下一行,不应该吗?)

小智 22

您将self.read 的结果传递给Thread的目标参数.线程期望传递一个函数来调用,所以只需删除括号并记住启动线程:

t1=threading.Thread(target=self.read)
t1.start()
print "something"
Run Code Online (Sandbox Code Playgroud)