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
_ 期望传递一个函数来调用,所以只需删除括号并记住启动线程:Thread
Thread
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
立即打电话)。