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界面关闭内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenCV+Python识别车牌和字符分割的实现

    OpenCV+Python识别车牌和字符分割的实现

    这篇文章主要介绍了OpenCV+Python识别车牌和字符分割的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Python3中.whl文件创建及使用

    Python3中.whl文件创建及使用

    本文主要介绍了Python3中.whl文件创建及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python实战之德州扑克第三步-比较大小

    python实战之德州扑克第三步-比较大小

    这篇文章主要介绍了python实战之德州扑克第三步-比较大小,稳中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-04-04
  • 老生常谈Python startswith()函数与endswith函数

    老生常谈Python startswith()函数与endswith函数

    下面小编就为大家带来一篇老生常谈Python startswith()函数与endswith函数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 一篇文章带你了解python标准库--time模块

    一篇文章带你了解python标准库--time模块

    下面小编就为大家带来一篇python模块之time模块。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-08-08
  • Python使用PIL进行JPEG图像压缩的简易教程

    Python使用PIL进行JPEG图像压缩的简易教程

    本文介绍了如何使用Python编程语言和wxPython图形用户界面库进行JPEG图像的压缩,通过添加滑块控件,我们可以调整压缩质量,并将压缩后的照片另存为原来的名称加上后缀"压缩+质量数字"的新文件,需要的朋友可以参考下
    2023-09-09
  • Python3读取文件常用方法实例分析

    Python3读取文件常用方法实例分析

    这篇文章主要介绍了Python3读取文件常用方法,以实例形式较为详细的分析了Python一次性读取、逐行读取及读取文件一部分的实现技巧,需要的朋友可以参考下
    2015-05-05
  • python中使用input()函数获取用户输入值方式

    python中使用input()函数获取用户输入值方式

    这篇文章主要介绍了python中使用input()函数获取用户输入值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Gradio中button组件的基本使用方式

    Gradio中button组件的基本使用方式

    Gradio中的button组件用于实现点击事件,通过click事件绑定函数来处理值的变化,点击时,函数接收组件的值作为输入,返回新的值或更新组件的属性,示例代码展示了如何在点击按钮时修改文本框的值并控制按钮的可见性
    2024-11-11
  • python使用PIL给图片添加文字生成海报示例

    python使用PIL给图片添加文字生成海报示例

    这篇文章主要介绍了python使用PIL给图片添加文字生成海报示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论