網站首頁 編程語言 正文
方法一、線程池執行的循環代碼為自己寫的情況
定義一個全局變量,默認為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
相關推薦
- 2022-02-18 matplotlib的legend參數與設置
- 2022-08-14 Gradle?Build?Cache引發的Task緩存編譯問題_Android
- 2022-07-12 hadoop 在jps中找不到namenode的原因
- 2022-05-08 Python?matplotlib實現折線圖的繪制_python
- 2022-11-15 python中sample函數的介紹與使用_python
- 2022-09-24 基于Pytorch實現邏輯回歸_python
- 2022-09-05 Pycharm虛擬環境pip時報錯:no?suchoption:--bulid-dir的解決辦法_p
- 2022-12-04 Jetpack之CameraX的使用_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支