t1=threading.Thread(target=self.read())
print("something")
t2=threading.Thread(target=self.runChecks(), args=(self,))
self.read无限期地运行,所以程序永远不会到达这print条线。不打电话怎么可能t1.start()?(即使我这么叫,它也应该开始运行并继续下一行,不是吗?)
t1=threading.Thread(target=self.read())
print("something")
t2=threading.Thread(target=self.runChecks(), args=(self,))
self.read无限期地运行,所以程序永远不会到达这print条线。不打电话怎么可能t1.start()?(即使我这么叫,它也应该开始运行并继续下一行,不是吗?)
由于. ()_ target=self.read()_ self.read_ _ _ _ _ self.read_ target_ 期望传递一个函数来调用,所以只需删除括号并记住启动线程:ThreadThread
t1=threading.Thread(target=self.read)
t1.start()
print("something")
对于需要参数的目标,您可以使用args和kwargs参数threading.Thread,也可以使用 lambda。例如,要f(a, b, x=c)在线程中运行,您可以使用
thread = threading.Thread(target=f, args=(a, b), kwargs={'x': c})
或者
thread = threading.Thread(target=lambda: f(a, b, x=c))
但请注意,如果您选择 lambda - lambda 将在使用时查找f, a, b, 和c在使用时,而不是在lambda定义时,因此如果您在安排线程之前重新分配这些变量中的任何一个,您可能会得到意想不到的结果(这可能花费任意长的时间,即使你start立即打电话)。