python QT界面关闭线程池的线程跟随退出完美解决方案
更新时间:2022年11月28日 17:13:35 作者:柳道
这篇文章主要介绍了python QT界面关闭,线程池的线程跟随退出解决思路方法,本文给大家分享两种方法结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
方法一、线程池执行的循环代码为自己写的情况
定义一个全局变量,默认为T,当QT界面关闭后,将该变量值改为F。
线程执行的循环代码内增加一个判断方法,每次循环之前对全局变量进行判断,如果结果为T则进行循环、如果为F,则break退出循环,结束线程
from concurrent.futures import ThreadPoolExecutor import time a = True # 设置全局变量 def fun(): # 线程池执行的函数 while a: # 线程池中的循环代码,每次循环都检查一遍变量a的值 time.sleep(0.1) # 线程需要执行的具体代码 print('1') tp = ThreadPoolExecutor(5) # 创建线程池 for i in range(10): tp.submit(fun) # 向线程池提交任务 time.sleep(1) a = False # 需要结束线程池任务时,执行该代码 tp.shutdown() # 关闭线程池
方法二、线程池中执行的循环为调用的模块内的方法
比如 paramiko 库中,sftp下载文件的方法。
这种情况可以利用回调函数进行判断。
回调函数检查控制变量,如果检测到需要停止执行时,执行sys.exit()结束退出线程
from concurrent.futures import ThreadPoolExecutor import sys import time a = True def call(): # 定义退出的函数 if not a: print('线程结束退出') sys.exit() # 退出 def fun(callback=None): # 模拟sftp.get方法,循环执行,并且有回调函数 while True: time.sleep(0.1) print('1') if callback != None: callback() # 每次循环调用回调函数,进行判断是否需要结束线程 tp = ThreadPoolExecutor(5) for i in range(10): tp.submit(fun, call) time.sleep(1) a = False tp.shutdown()
到此这篇关于python QT界面关闭,线程池的线程跟随退出解决思路方法的文章就介绍到这了,更多相关python QT界面关闭内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python中requests使用代理proxies方法介绍
这篇文章主要介绍了python中requests使用代理proxies方法介绍,具有一定参考价值,需要的朋友可以了解下。2017-10-10python+pytest接口自动化之token关联登录的实现
公司某管理后台系统,登录后返回token,接着去请求其他接口时请求头中都需要加上这个token,否则提示请先登录,今天通过本文给大家介绍下python+pytest接口自动化之token关联登录的实现,感兴趣的朋友一起看看吧2022-04-04
最新评论