我正在尝试在后台运行一个线程循环,我可以使用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
答案 0 :(得分:1)
请记住,在python中,所有线程(使用解释器)都受GIL限制,因此任何时候都只有一个线程运行python代码。这意味着如果你在一个线程中持有GIL的python land中有一个繁忙的循环,它将停止执行另一个线程。要了解有关GIL的更多信息,请在此处查看David Beazley的演示文稿:http://www.dabeaz.com/GIL/