python多執行緒與多程序中join()方法的效果是相同的。
下面以多執行緒為例:
join所完成的工作就是執行緒同步,即主線程任務結束之後,進入阻塞狀態,一直等待其他的子執行緒執行結束之後,主線程再終止
沒有join的情況下:
import threading
import time
def run():
time.sleep(2)
print('當前執行緒的名字是: ', threading.current_thread().name)
time.sleep(2)
start_time = time.time()
print('這是主線程:', threading.current_thread().name)
thread_list =
for i in range(5):
t = threading.thread(target=run)
for t in thread_list:
t.start()
print('主線程結束!' , threading.current_thread().name)
print('一共用時:', time.time()-start_time)
執行效果:這是主線程: mainthread
主線程結束! mainthread
一共用時: 0.0010018348693847656
當前執行緒的名字是: thread-3
當前執行緒的名字是: thread-4
當前執行緒的名字是: thread-2
當前執行緒的名字是: thread-1
當前執行緒的名字是: thread-5
process finished with exit code 0
結果分析:
1.我們的計時是對主線程計時,主線程結束,計時隨之結束,列印出主線程的用時。2.主線程的任務完成之後,主線程隨之結束,子執行緒繼續執行自己的任務,直到全部的子執行緒的任務全部結束,程式結束。
有join的情況下:
執行結果:import threading
import time
def run():
time.sleep(2)
print('當前執行緒的名字是: ', threading.current_thread().name)
time.sleep(2)
start_time = time.time()
print('這是主線程:', threading.current_thread().name)
thread_list =
for i in range(5):
t = threading.thread(target=run)
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)
這是主線程: mainthread
當前執行緒的名字是: thread-1
當前執行緒的名字是: thread-5
當前執行緒的名字是: thread-3
當前執行緒的名字是: thread-2
當前執行緒的名字是: thread-4
主線程結束了! mainthread
一共用時: 4.003001928329468
process finished with exit code 0
結果分析:
1.可以看到,主線程一直等待全部的子執行緒結束之後,主線程自身才結束,程式退出
join有乙個timeout引數:
當設定守護執行緒時,含義是主線程對於子執行緒等待timeout的時間將會殺死該子執行緒,最後退出程式。所以說,如果有10個子執行緒,全部的等待時間就是每個timeout的累加和。簡單的來說,就是給每個子執行緒乙個timeout的時間,讓他去執行,時間一到,不管任務有沒有完成,直接殺死。
沒有設定守護執行緒時,主線程將會等待timeout的累加和這樣的一段時間,時間一到,主線程結束,但是並沒有殺死子執行緒,子執行緒依然可以繼續執行,直到子執行緒全部結束,程式退出。
詳情請看:
Python 多執行緒與多程序
前言 以前玩單機或者玩小資料集,都基本不用多執行緒或多程序都能基本滿足需求了 所以沒怎麼了解這方面的東西。但現在玩幾百萬甚至上千萬的資料,甚至集群等東西之後,就有必要學習多執行緒或多程序了。在python中首先要匯入相關的模組 import threading as td import multip...
python 多執行緒與多程序
程序與執行緒的區別 程序 應用程式的執行例項,每乙個執行中的程式就是乙個程序 執行緒 程序的組成部分,乙個程序可以擁有多個執行緒 在多執行緒中,會有乙個主線程來完成整個程序從開始到結束的全部操作,而其他的執行緒會在主線程的執行過程中被建立或退出。python景區賣票系統 多執行緒的應用 import...
Python多執行緒與多程序
python多執行緒與多程序 程序 process 和執行緒 thread 是非常抽象的概念,也是程式設計師必需掌握的核心知識!多程序和多執行緒程式設計對於 的併發執行,提公升 效率和縮短執行時間至關重要。程序 process 和執行緒 thread 程序是作業系統分配資源的最小單元 執行緒是作業系...