色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python 如何停止一個死循環的線程

瀏覽:87日期:2022-07-04 14:40:21

進程想要執行任務就需要依賴線程。換句話說,就是進程中的最小執行單位就是線程,并且一個進程中至少有一個線程。

那什么是多線程?提到多線程這里要說兩個概念,就是串行和并行,搞清楚這個,我們才能更好地理解多線程。

所謂串行,其實是相對于單條線程來執行多個任務來說的,我們就拿下載文件來舉個例子:當我們下載多個文件時,在串行中它是按照一定的順序去進行下載的,也就是說,必須等下載完A之后才能開始下載B,它們在時間上是不可能發生重疊的。

python 如何停止一個死循環的線程

并行:下載多個文件,開啟多條線程,多個文件同時進行下載,這里是嚴格意義上的,在同一時刻發生的,并行在時間上是重疊的。

python 如何停止一個死循環的線程

問題描述:

前幾天寫一個項目,然后項目中有一個死循環的線程,我需要讓他在我需要的時候直接停止該線程,但是使用基本方法join(),效果是無效的,因此我又去了百度方法,外加國外官方文檔,大概的結果就是為了保護進程,這種死循環使用原來方法是很難實現的,

整體解決方案:

創建線程函數

class myThread(threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.counter = counter def run(self): print('開啟線程: ' + self.name) # 獲取鎖,用于線程同步 threadLock.acquire() # 執行要開啟的線程 # 釋放鎖,開啟下一個線程 threadLock.release()

死循環函數

def Dead_circle(): while True: print('死循環')

增加結束的條件

def run_go(): num = 0 while True: time.sleep(1) num += 1 if num == 10: return False # 假設我執行10s后結束

增加新方法

def run_go(): num = 0 while True: time.sleep(1) num += 1 if num == 10: return False

修改執行方法

def Dead_circle(): thread1 = myThread(1, 'Thread-1', 1) thread1.start() while thread1.counter: time.sleep(1) print('死循環') thread1.join()

修改線程類

class myThread(threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.counter = counter self.State = True def run(self): print('開啟線程: ' + self.name) # 獲取鎖,用于線程同步 threadLock.acquire() # 執行要開啟的線程 if not run_go(): self.counter = False # 釋放鎖,開啟下一個線程 threadLock.release()

整體代碼

import threadingimport timefrom tkinter import *threadLock = threading.Lock()class myThread(threading.Thread): def __init__(self, threadID, name, counter): threading.Thread.__init__(self) self.threadID = threadID self.name = name self.counter = counter self.State = True def run(self): print('開啟線程: ' + self.name) # 獲取鎖,用于線程同步 threadLock.acquire() # 執行要開啟的線程 if not run_go(): self.counter = False # 釋放鎖,開啟下一個線程 threadLock.release()def run_go(): num = 0 while True: time.sleep(1) num += 1 if num == 10: return Falsedef Dead_circle(): thread1 = myThread(1, 'Thread-1', 1) thread1.start() while thread1.counter: time.sleep(1) print('死循環') thread1.join()if __name__ == ’__main__’: Dead_circle()

整體思路

原來的思路是執行線程,然后規定條件,當條件觸發時,直接停止該線程,但是由于線程守護的原因,我們沒辦法使得一個死循環突然停止,因此,我修改了原來的思路,我讓死循環函數在定義的時候去創建一個計時線程,這樣我的線程就是可控的,通過查找線程中的變量,獲得是否停止,這樣就可以控制我的線程執行時間。

以上就是python 如何停止一個死循環的線程的詳細內容,更多關于python 停止死循環的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日本无卡码一区二区三区 | 999久久| 狠狠色噜噜狠狠狠米奇9999 | 波多野结衣一区在线观看 | 免费又黄又爽又猛大片午夜 | www.99在线观看 | 中国女警察一级毛片视频 | 日韩一级大片 | 国产在线精品福利一区二区三区 | 最新亚洲人成网站在线影院 | 成人手机在线 | 三级做人爱c视频18三级 | 国产猛烈无遮掩视频免费网站男女 | 在线不卡一区二区三区日韩 | 在线免费观看国产 | 国产精品二区页在线播放 | 韩国一级毛片 | 日本一区三区二区三区四区 | 日本www免费视频网站在线观看 | 美国毛片免费观看 | 高清一区二区在线观看 | 久久91精品国产91久久户 | 欧美黄色精品 | 亚洲毛片免费在线观看 | 欧美成人短视频 | 免看一级a一片成人123 | 欧美日韩在线第一页 | 女人张开腿给男人捅 | 国内精品美女写真视频 | 成人小视频在线观看 | 亚洲精品在线影院 | 韩国福利一区 | 国产欧美日韩视频免费61794 | 欧美aaa| 日韩中文字幕免费 | 男女上下爽无遮挡午夜免费视频 | 日韩三级视频在线观看 | 国产精品成人不卡在线观看 | 521av香蕉 | 国产福利三区 | 成人区视频爽爽爽爽爽 |