第一點threading中使用多線程兩種方法:
1.使用回調
2.重寫run方法
關於守護進程setDaemon以及join方法問題
(1)Python中默認setDaemon(false)是設置用戶線程爲守護線程
效果:當用戶任務執行完畢後,用戶線程退出,其他子線程依舊會執行,直到退出。
(2)當設置子線程爲守護進程,即setDaemon(true)
效果:當用戶任務執行完畢後,用戶線程退出,其他子線程也會中斷退出。
(3)使用join()方法後
效果:爲了完成線程同步,即當用戶任務執行完成後,主線程阻塞等待,直到子線程任務都執行完成纔會退出。
(4)當然join()裏面有個timeout參數
如果設置了守護進程setDaemon(true),則給一個timeout每個子線程,若時間到了,直接殺死子線程。
如果沒有設置守護進程setDaemon(false),則給一個timeout給用戶線程,不管其執行是否完畢,都會被kill,其他子線程依舊繼續執行。
如果創建多個線程,注意多個線程join()的順序問題。