码农网

网站首页> 后端开发> python

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 QT界面 关闭线程池

本文地址:https://m.manongw.com/article/456.html

文章来源:转载于CSDN,转载网址为https://www.cnblogs.com/mmld/p/15812996.html

版权申明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 ezhongheng@126.com 举报,一经查实,本站将立刻删除。

最近更新
热门素材
html5卡通章鱼素材,几何图形抽象设计

html5卡通章鱼素材,几何图形抽象设计

图片素材

html文字动画特效,文字虚线边框

html文字动画特效,文字虚线边框

文字特效

Bootstrap点击左侧垂直导航菜单全屏网页切换特效

Bootstrap点击左侧垂直导航菜单全屏网页切换特效

导航菜单

js+css3透明渐变风格导航菜单特效

js+css3透明渐变风格导航菜单特效

导航菜单

8款经典的css网站顶部导航栏样式

8款经典的css网站顶部导航栏样式

图片素材

js+css3网站顶部自适应导航栏菜单特效

js+css3网站顶部自适应导航栏菜单特效

图片素材

jQuery自定义添加删除表格行内容特效

jQuery自定义添加删除表格行内容特效

图片素材

jQuery+CSS3漂亮的下拉菜单选择框美化特效

jQuery+CSS3漂亮的下拉菜单选择框美化特效

css3实例

jQuery文字公告无限滚动轮播特效

jQuery文字公告无限滚动轮播特效

css3实例

jQuery+Layui省市区城市三级联动菜单选择特效

jQuery+Layui省市区城市三级联动菜单选择特效

css3实例