繁体   English   中英

Python 2:线程停止运行,我不知道为什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM