Python多線程:主線程等待所有子線程結(jié)束代碼
我就廢話不多說了,還是直接看代碼吧!
from time import ctimeimport threadingimport timedef a(): #for i in range(5):print(’Program a is running... at ’, ctime(),u’.線程名為:’,threading.current_thread().name )time.sleep(0.2)def b(x): #for i in range(5):print(’Program b(’+x+’) is running... at ’, ctime(),u’.線程名為:’,threading.current_thread().name )time.sleep(0.1)if __name__ == ’__main__’: print(’Mainthread %s is running...’ % threading.current_thread().name) thread_list = [] for i in range(400):#同時運行多個 t1= threading.Thread(target=a) thread_list.append(t1) t2 = threading.Thread(target=b, args=(’Python’,)) thread_list.append(t2) t3 = threading.Thread(target=b, args=(’Java’,)) thread_list.append(t3)for t in thread_list:t.setDaemon(True) # 設(shè)置為守護線程,不會因主線程結(jié)束而中斷t.start() for t in thread_list:t.join() # 子線程全部加入,主線程等所有子線程運行完畢 print(’Mainthread %s ended.’ % threading.current_thread().name)
補充知識:Python主線程結(jié)束為什么守護線程還在運行?
在實際的交互模式中,主線程只有在Python退出時才終止,所以action函數(shù)輸出結(jié)果還是被打印出來了。”
按照我的理解應(yīng)該是說,在shell里主線程在輸出結(jié)果之后并沒有真的結(jié)束,所以action還會打印結(jié)果。
建議把程序編譯出來,放到另外的環(huán)境中測試,估計就會是你要的結(jié)果了。
以上這篇Python多線程:主線程等待所有子線程結(jié)束代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程2. 詳解瀏覽器的緩存機制3. Xml簡介_動力節(jié)點Java學院整理4. python多線程和多進程關(guān)系詳解5. 一款功能強大的markdown編輯器tui.editor使用示例詳解6. Python xlrd/xlwt 創(chuàng)建excel文件及常用操作7. python 寫函數(shù)在一定條件下需要調(diào)用自身時的寫法說明8. 存儲于xml中需要的HTML轉(zhuǎn)義代碼9. Python 實現(xiàn)勞拉游戲的實例代碼(四連環(huán)、重力四子棋)10. ASP動態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗分享
