python 實現多執行緒併發執行 【join函式】
阿新 • • 發佈:2019-01-03
主執行緒啟動一個子執行緒t並等到t執行緒結束後才執行:
import threading
import time
def reading():
for i in range(5):
print("reading", i)
time.sleep(1)
t = threading.Thread(target = reading)
t.setDaemon(True)
t.start()
t.join()
print("The End")
執行結果為:
reading 0 reading 1 reading 2 reading 3 reading 4 The End
由此可見主執行緒啟動子執行緒t執行reading函式 t.join阻塞主執行緒,一直等到t執行緒執行完畢後才結束t執行緒結束才執行主執行緒輸出the end。
在子執行緒啟動另外一個子執行緒,並等待子執行緒結束後才繼續執行:
import threading import time def reading(): for i in range(5): print("reading", i) time.sleep(1) def test(): r = threading.Thread(target=reading) r.setDaemon(True) r.start() r.join() print("test end") t = threading.Thread(target = test) t.setDaemon(True) t.start() t.join() print("The End")
執行結果:
reading 0
reading 1
reading 2
reading 3
reading 4
test end
The End
由此可見主執行緒啟動t執行緒後t.join會等待t執行緒結束,在test中再次啟動r子執行緒,r子執行緒加入r.join而阻塞t執行緒,知道r程序結束,然後才顯示test end,然後t執行緒結束再次結束t.join。主執行緒顯示The End 結束。