t1=threading.Thread(target=self.read())
print "something"
t2=threading.Thread(target=self.runChecks(), args=(self))
self.read
将无限期运行,所以程序永远不会到达print
线。 这怎么可能不调用t1.start()
(即使我称呼它,是它shold开始运行,并继续到下一行,不应该吗?)
t1=threading.Thread(target=self.read())
print "something"
t2=threading.Thread(target=self.runChecks(), args=(self))
self.read
将无限期运行,所以程序永远不会到达print
线。 这怎么可能不调用t1.start()
(即使我称呼它,是它shold开始运行,并继续到下一行,不应该吗?)
你传递self.read的结果线程的目标参数。 螺纹预计要传递一个函数来调用,所以只是删除括号,并记得启动线程:
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))
虽然看出来,如果你选择的拉姆达-拉姆达将查找f
, a
, b
和c
在使用时,不能当lambda
的定义,因此如果您的线程之前重新分配所有这些变量可以得到意想不到的结果定(这可能需要任意长,即使调用start
立即)。