join的作用就凸顯出來了,join所完成的工作就是執行緒同步,也就是主執行緒任務結束之後,進入阻塞狀態,一直等待其他的子執行緒執行結束後,主執行緒在終止。
join有一個timeout參數:(推薦學習:Python影片教學)
當設定守護線程時,意義是主線程對於子線程等待timeout的時間將會殺死該子線程,最後退出程式。所以說,如果有10個子線程,全部的等待時間就是每個timeout的累加和。簡單的來說,就是給每個子執行緒一個timeout的時間,讓他去執行,時間一到,不管任務有沒有完成,直接殺死。
沒有設定守護線程時,主線程將會等待timeout的累加和這樣的一段時間,時間一到,主線程結束,但是並沒有殺死子線程,子線程依然可以繼續執行,直到子執行緒全部結束,程式退出。
join的作用
import threading import time def run(): time.sleep(2) print('当前线程的名字是: ', threading.current_thread().name) time.sleep(2) if __name__ == '__main__': start_time = time.time() print('这是主线程:', threading.current_thread().name) thread_list = [] for i in range(5): t = threading.Thread(target=run) thread_list.append(t) for t in thread_list: t.setDaemon(True) t.start() for t in thread_list: t.join() print('主线程结束了!' , threading.current_thread().name) print('一共用时:', time.time()-start_time)
更多Python相關技術文章,請造訪Python教學欄位學習!
以上是python的線程join怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!