對(duì)python 多線程中的守護(hù)線程與join的用法詳解
多線程:在同一個(gè)時(shí)間做多件事
守護(hù)線程:如果在程序中將子線程設(shè)置為守護(hù)線程,則該子線程會(huì)在主線程結(jié)束時(shí)自動(dòng)退出,設(shè)置方式為thread.setDaemon(True),要在thread.start()之前設(shè)置,默認(rèn)是false的,也就是主線程結(jié)束時(shí),子線程依然在執(zhí)行。
thread.join():在子線程完成運(yùn)行之前,該子線程的父線程(一般就是主線程)將一直存在,也就是被阻塞
實(shí)例:
#!/usr/bin/python # encoding: utf-8 import threading from time import ctime,sleep def func1(): count=0 while(True): sleep(1) print 'fun1 ',count count = count+1 def func2(): count=0 while(True): sleep(2) print 'fun2 ',count count = count+1 threads = [] t1 = threading.Thread(target=func1) threads.append(t1) t2 = threading.Thread(target=func2) threads.append(t2) if __name__ == '__main__': for t in threads: t.setDaemon(True) t.start()
上面這段程序執(zhí)行后,將不會(huì)有任何輸出,因?yàn)樽泳€程還沒(méi)來(lái)得及執(zhí)行,主線程就退出了,子線程為守護(hù)線程,所以也就退出了。
修改后的程序:
#!/usr/bin/python # encoding: utf-8 import threading from time import ctime,sleep def func1(): count=0 while(True): sleep(1) print 'fun1 '+str(count) count = count+1 def func2(): count=0 while(True): sleep(2) print 'fun2 '+str(count) count = count+1 threads = [] t1 = threading.Thread(target=func1) threads.append(t1) t2 = threading.Thread(target=func2) threads.append(t2) if __name__ == '__main__': for t in threads: t.setDaemon(True) t.start() t.join()
可以按照預(yù)期執(zhí)行了,主要join的調(diào)用要加在循環(huán)外,不然程序只會(huì)執(zhí)行第一個(gè)線程。
print 的部分改成+,是為了避免輸出結(jié)果中出現(xiàn)類似fun1 fun2 49 這種情況,這是由于程序執(zhí)行太快,用‘,'間隔相當(dāng)于執(zhí)行了兩次print ,在這期間另一個(gè)線程也執(zhí)行了print,所以導(dǎo)致了重疊。
以上這篇對(duì)python 多線程中的守護(hù)線程與join的用法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python語(yǔ)言實(shí)現(xiàn)SIFT算法
SIFT,即尺度不變特征變換,是用于圖像處理領(lǐng)域的一種描述,本文重點(diǎn)給大家介紹Python語(yǔ)言實(shí)現(xiàn)SIFT算法,感興趣的朋友一起看看吧2021-11-11
用Python中的turtle模塊畫(huà)圖兩只小羊方法
在本片文章里小編給大家分享了關(guān)于用Python中的turtle模塊畫(huà)圖兩只小羊的實(shí)例操作方法,需要的朋友們學(xué)習(xí)下。2019-04-04
python密碼學(xué)列置換密碼學(xué)習(xí)
這篇文章主要為大家介紹了python密碼學(xué)列置換密碼學(xué)習(xí)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Win10系統(tǒng)下Pytorch環(huán)境的搭建過(guò)程
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Win10系統(tǒng)Pytorch環(huán)境搭建過(guò)程展開(kāi),文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下2021-06-06
用Python批量把文件復(fù)制到另一個(gè)文件夾的實(shí)現(xiàn)方法
這篇文章主要介紹了用Python批量把文件復(fù)制到另一個(gè)文件夾的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

