新聞中心
在Python中,線程的停止通??梢酝ㄟ^以下幾種方式實(shí)現(xiàn):

10年的萬全網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整萬全建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“萬全網(wǎng)站設(shè)計(jì)”,“萬全網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
1、使用標(biāo)志位:這是最常用的一種方式,通過設(shè)置一個(gè)全局的標(biāo)志位,線程在運(yùn)行過程中檢查這個(gè)標(biāo)志位,如果標(biāo)志位為True,則線程繼續(xù)運(yùn)行,如果標(biāo)志位為False,則線程停止運(yùn)行。
2、使用threading.Event:threading.Event對(duì)象有一個(gè)內(nèi)部標(biāo)志,可以使用它的set()方法來設(shè)置標(biāo)志,使用clear()方法來清除標(biāo)志,線程在運(yùn)行過程中檢查這個(gè)標(biāo)志,如果標(biāo)志為True,則線程繼續(xù)運(yùn)行,如果標(biāo)志為False,則線程停止運(yùn)行。
3、使用threading.Thread.join():join()方法可以阻塞主線程,直到目標(biāo)線程結(jié)束,這樣,當(dāng)我們調(diào)用join()方法時(shí),目標(biāo)線程就會(huì)停止運(yùn)行。
下面分別詳細(xì)介紹這三種方式。
1、使用標(biāo)志位:
import threading
import time
定義一個(gè)全局的標(biāo)志位
stop_flag = False
def worker():
global stop_flag
while not stop_flag:
print("線程正在運(yùn)行...")
time.sleep(1)
print("線程已經(jīng)停止")
t = threading.Thread(target=worker)
t.start()
time.sleep(5)
stop_flag = True
t.join()
2、使用threading.Event:
import threading
import time
創(chuàng)建一個(gè)Event對(duì)象
event = threading.Event()
def worker():
while not event.is_set():
print("線程正在運(yùn)行...")
time.sleep(1)
print("線程已經(jīng)停止")
t = threading.Thread(target=worker)
t.start()
time.sleep(5)
event.set()
t.join()
3、使用threading.Thread.join():
import threading
import time
def worker():
while True:
print("線程正在運(yùn)行...")
time.sleep(1)
print("線程已經(jīng)停止")
t = threading.Thread(target=worker)
t.start()
time.sleep(5)
t.join() # 阻塞主線程,直到目標(biāo)線程結(jié)束
以上就是Python中停止線程的三種常見方式,在實(shí)際使用中,可以根據(jù)實(shí)際需求選擇合適的方式,需要注意的是,以上代碼中的線程都是無限循環(huán)的,如果沒有設(shè)置停止條件,線程會(huì)一直運(yùn)行下去,我們需要在適當(dāng)?shù)臅r(shí)候設(shè)置停止條件,讓線程能夠正常停止。
網(wǎng)站欄目:python如何停止線程
分享網(wǎng)址:http://m.fisionsoft.com.cn/article/ccciegg.html


咨詢
建站咨詢
