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
  • asp之家 网络编程 m.aspxhome.com