Python 官方文档:入门教程 => 点击学习
今天小编给大家分享一下python Qt界面关闭线程池的线程跟随退出问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来
今天小编给大家分享一下python Qt界面关闭线程池的线程跟随退出问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
定义一个全局变量,默认为T,当QT界面关闭后,将该变量值改为F。
线程执行的循环代码内增加一个判断方法,每次循环之前对全局变量进行判断,如果结果为T则进行循环、如果为F,则break退出循环,结束线程
from concurrent.futures import ThreadPoolExecutor import timea = 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 ThreadPoolExecutorimport sysimport timea = Truedef 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 = Falsetp.shutdown()
以上就是“Python QT界面关闭线程池的线程跟随退出问题怎么解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。
--结束END--
本文标题: python QT界面关闭线程池的线程跟随退出问题怎么解决
本文链接: https://lsjlt.com/news/346431.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0