参考:http://stackoverflow.com/questions/18018033/how-to-stop-a-looping-thread-in-python
Python中的线程,有时候运行在死循环中,那么如何关闭这种运行状态中的线程呢?
本参考链接中给出了一种方法,就是通过修改控制循环标志位来实现,让线程跳出run方法即可.如下所示:
下面代码是一个thread的类:
class PingAssets(threading.Thread):
    def __init__(self, threadNum, asset, window):
        threading.Thread.__init__(self)
        self.threadNum = threadNum
        self.window = window
        self.asset = asset
        self.signal = True
    def run(self):
        while self.signal:
             do_stuff()
             sleep()
通过__init__函数,我们使得signal变量初始值为True,保证了run方法轮询.
那么如何停止线程呢?很简单,修改 signal 参数为 False 即可.
def OnStop(self, e):
        for t in self.threads:
            t.signal = False
这样就实现了停止线程运行.
文章的脚注信息由WordPress的wp-posturl插件自动生成
 
                 微信扫一扫,打赏作者吧~
微信扫一扫,打赏作者吧~ 
	![[整理]how to run flask with pyqt5](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2021/03/pyqt_flask.png&w=280&h=210&zc=1)
![[已解决]LINK : fatal error LNK1158: cannot run 'rc.exe' 错误的解决办法](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2021/02/Snipaste_2021-02-17_15-18-26-1024x505.png&w=280&h=210&zc=1)
![[已解决]Python扩展模块 error: Unable to find vcvarsall.bat](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2020/11/Snipaste_2020-11-19_10-01-38.png&w=280&h=210&zc=1)
![[整理]PyQt画圆,动态变色](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2020/08/drawCircle.gif&w=280&h=210&zc=1)
