[TOC]
一、守護(hù)線程
無論是進(jìn)程還是線程,都遵循:守護(hù)xx會(huì)等待主xx運(yùn)行完畢后被銷毀。需要強(qiáng)調(diào)的是:運(yùn)行完畢并非終止運(yùn)行。
- 對(duì)主進(jìn)程來說,運(yùn)行完畢指的是主進(jìn)程代碼運(yùn)行完畢
- 對(duì)主線程來說,運(yùn)行完畢指的是主線程所在的進(jìn)程內(nèi)所有非守護(hù)線程統(tǒng)統(tǒng)運(yùn)行完畢,主線程才算運(yùn)行完畢
1.1 詳細(xì)解釋
- 主進(jìn)程在其代碼結(jié)束后就已經(jīng)算運(yùn)行完畢了(守護(hù)進(jìn)程在此時(shí)就被回收),然后主進(jìn)程會(huì)一直等非守護(hù)的子進(jìn)程都運(yùn)行完畢后回收子進(jìn)程的資源(否則會(huì)產(chǎn)生僵尸進(jìn)程),才會(huì)結(jié)束。
- 主線程在其他非守護(hù)線程運(yùn)行完畢后才算運(yùn)行完畢(守護(hù)線程在此時(shí)就被回收)。因?yàn)橹骶€程的結(jié)束意味著進(jìn)程的結(jié)束,進(jìn)程整體的資源都將被回收,而進(jìn)程必須保證非守護(hù)線程都運(yùn)行完畢后才能結(jié)束。
1.2 守護(hù)進(jìn)程演示
from threading import Thread,enumerate,currentThread
import time
'''
守護(hù)線程:
守護(hù)的是進(jìn)程的運(yùn)行周期,只要當(dāng)前進(jìn)程中一個(gè)線程在運(yùn)行就會(huì)守護(hù)
'''
def task():
print('守護(hù)線程開始')
print(currentThread())
time.sleep(20)
def task2():
print('子線程 start')
time.sleep(5)
print(enumerate()) # 主線程結(jié)束了,但是 守護(hù)進(jìn)程并沒有死掉
print('子線程 end')
if __name__ == '__main__':
t1 = Thread(target=task)
t2 = Thread(target=task2)
t1.setName("守護(hù)線程")
t2.setName("子線程")
t1.daemon = True # 守護(hù)線程
t2.start()
t1.start()
print('主')
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
