python QT界面关闭线程池的线程跟随退出完美解决方案
作者:柳道 时间:2023-01-01 11:56:21
方法一、线程池执行的循环代码为自己写的情况
定义一个全局变量,默认为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()
来源:https://www.cnblogs.com/mmld/p/15812996.html
标签:python,QT,界面关闭,线程退出
0
投稿
猜你喜欢
Python爬虫突破反爬虫机制知识点总结
2021-09-17 12:38:22
python动态参数用法实例分析
2021-03-02 06:27:51
深入理解Django的信号机制
2023-01-20 10:19:58
GO语言中通道和sync包的使用教程分享
2024-02-10 15:14:16
Python去除图片水印实现方法详解
2022-09-19 22:15:37
python数字图像处理像素的访问与裁剪示例
2023-05-12 11:07:20
卸载安装Node.js与npm过程详解
2024-05-13 09:29:58
JS实现键值对遍历json数组功能示例
2024-04-10 10:52:40
查看vue-cli脚手架的版本号和vue真实版本号及详细操作命令
2023-07-02 17:04:20
一文带你感受Go语言空结构体的魔力
2024-05-05 09:30:15
PHP简易延时队列的实现流程详解
2023-05-29 23:02:48
Python将string转换到float的实例方法
2023-06-13 07:23:47
python因子分析的实例
2021-12-29 18:20:44
详解Python进阶之切片的误区与高级用法
2022-09-18 04:03:12
XHTML下,JS浮动代码失效的问题
2024-05-28 15:37:51
Java如何连接数据库图文教程
2024-01-16 20:45:16
Mysql 查询JSON结果的相关函数汇总
2024-01-23 22:30:16
web脚本程序攻击的防范
2007-10-18 13:29:00
常见的数据库1045密码错误问题解决方法
2024-01-25 09:30:18
符合标准的纯CSS三 级弹出菜单
2008-01-06 15:34:00