[英]Python 2: Thread stops running and I don't know why
我试图在后台运行一个线程,该线程可以循环使用gui按钮将Thread对象的go属性设置为false来关闭。 但是,该线程仅运行一秒钟。
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.go = True
def run(self):
while self.go:
print "okay!"
这应该连续打印“好!” 但事实并非如此。 起初它什么都不做。 然后,当我按下gui按钮将其停止,然后启动MyThread的另一个实例时,它将打印大约50行并停止。
我正在使用python 2.7.1运行Ubuntu Linux 11.04
请记住,在python中,所有使用解释器的线程都受GIL的约束,因此任何时候都只有一个线程在运行python代码。 这意味着,如果在一个Python线程中有一个繁忙的循环,将GIL保留在一个线程中,它将停止执行另一个线程。 要了解有关GIL的更多信息,请在此处查看David Beazley的演讲: http : //www.dabeaz.com/GIL/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.