python_多線程join和setDaemon


1、join ()方法:主線程A中,創建了子線程B,並且在主線程A中調用了B.join(),那么,主線程A會在調用的地方等待,直到子線程B完成操作后,才可以接着往下執行,那么在調用這個線程時可以使用被調用線程的join方法。

import  time,threading

def lajifenlei():
    time.sleep(2)
    print("haha jjj")

for i in range(10):
    th=threading.Thread(target=lajifenlei) #聲明子線程
    th.start()  # start在join前
    th.join() #主線程等待子線程

print("main theading") #主線程

C:\Users\zhaow\AppData\Local\Programs\Python\Python37\python.exe D:/study/python/atp/lib/t.py
haha jjj
haha jjj
haha jjj
haha jjj
haha jjj
haha jjj
haha jjj
haha jjj
haha jjj
haha jjj
main theading #等待所有的子線程運行完才會運行主進程

 

2、setDaemon()方法。主線程A中,創建了子線程B,並且在主線程A中調用了B.setDaemon(),這個的意思是,把主線程A設置為守護線程,這時候,要是主線程A執行結束了,就不管子線程B是否完成,一並和主線程A退出.這就是setDaemon方法的含義,這基本和join是相反的。此外,還有個要特別注意的:必須在start() 方法調用之前設置

import  time,threading

def lajifenlei():
    time.sleep(2)
    print("haha jjj")

for i in range(10):
    th=threading.Thread(target=lajifenlei) #聲明子線程
    th.setDaemon(True) #子線程設置為守護線程
    th.start() #start在守護線程后面
    
print("main theading") #主線程


C:\Users\zhaow\AppData\Local\Programs\Python\Python37\python.exe D:/study/python/atp/lib/t.py
main theading  #主線程未等子線程運行,直接結束了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM