91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python?QT界面關閉線程池的線程跟隨退出問題怎么解決

發布時間:2022-11-29 09:59:23 來源:億速云 閱讀:124 作者:iii 欄目:開發技術

今天小編給大家分享一下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界面關閉線程池的線程跟隨退出問題怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旅游| 土默特左旗| 宁河县| 曲沃县| 南和县| 凤山市| 汕头市| 通渭县| 丹阳市| 阿尔山市| 集安市| 古田县| 盐源县| 湖北省| 靖州| 秀山| 缙云县| 武邑县| 新化县| 黄山市| 扎鲁特旗| 安阳市| 红河县| 平乐县| 琼海市| 苏州市| 隆尧县| 塔城市| 西林县| 罗源县| 时尚| 梁平县| 金坛市| 会东县| 尚志市| 黄大仙区| 江口县| 镶黄旗| 宁津县| 永昌县| 望江县|