目錄
-
一、守護(hù)線程
- 1.1 詳細(xì)解釋
- 1.2 守護(hù)線程例1
- 1.3 守護(hù)線程例2
一、守護(hù)線程
無論是進(jìn)程還是線程,都遵循: 守護(hù)xx會等待主xx運行完畢后被銷毀。需要強(qiáng)調(diào)的是:運行完畢并非終止運行。
- 對主進(jìn)程來說,運行完畢指的是主進(jìn)程代碼運行完畢
- 對主線程來說,運行完畢指的是主線程所在的進(jìn)程內(nèi)所有非守護(hù)線程統(tǒng)統(tǒng)運行完畢,主線程才算運行完畢
1.1 詳細(xì)解釋
-
主進(jìn)程在其代碼結(jié)束后就已經(jīng)算運行完畢了(守護(hù)進(jìn)程在此時就被回收),然后主進(jìn)程會一直等非守護(hù)的子進(jìn)程都運行完畢后回收子進(jìn)程的資源(否則會產(chǎn)生僵尸進(jìn)程),才會結(jié)束。
-
主線程在其他非守護(hù)線程運行完畢后才算運行完畢(守護(hù)線程在此時就被回收)。因為主線程的結(jié)束意味著進(jìn)程的結(jié)束,進(jìn)程整體的資源都將被回收,而進(jìn)程必須保證非守護(hù)線程都運行完畢后才能結(jié)束。
1.2 守護(hù)線程例1
from threading import Thread
import time
def sayhi(name):
time.sleep(2)
print('%s say hello' %name)
if __name__ == '__main__':
t=Thread(target=sayhi,args=('nick',))
t.setDaemon(True) #必須在t.start()之前設(shè)置
t.start()
print('主線程')
print(t.is_alive())
'''
主線程
True
'''
1.3 守護(hù)線程例2
from threading import Thread
import time
def foo():
print(123)
time.sleep(1)
print("end123")
def bar():
print(456)
time.sleep(3)
print("end456")
t1=Thread(target=foo)
t2=Thread(target=bar)
t1.daemon=True
t1.start()
t2.start()
print("main-------")
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

