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 #主線程未等子線程運行,直接結束了