Python Thread 多執行緒

Python 程式在一般情況下是「同步」的,程式會一步一步執行,等到每一步結束後才會再繼續下一個動作。
    
import time


def job():
    print("job 開始")
    time.sleep(2)
    print("job 結束")


print("開始")
job()
print("結束")
    

執行結果:
    
開始
job 開始
job 結束
結束
    

但是有的時候我們需要讓多個程式碼片段同時執行,這時候就可以使用到多執行緒,將某些程式碼放到其他執行緒來執行。
例如下面的範例程式碼中,我們就啟動了一個新的執行緒來執行 job 函數:
    
import threading
import time


def job():
    print("job 開始")
    time.sleep(2)
    print("job 結束")

print("開始")
thread = threading.Thread(target=job) # 建立執行緒,執行緒的工作函數是 job
thread.start() # 開始執行執行緒
print("結束")
    

所以在執行時會發現 job 函數的事情還沒做完就已經印出「結束」了
    
開始
job 開始
結束
job 結束
    

如果要等待執行緒結束可以使用下面的程式碼:
    
thread.join() # 等待執行緒結束
    

在建立執行緒時也可以傳入函數的參數:
    
import threading
import time

def job(text):
    print(f"job 開始: {text}")
    time.sleep(2)
    print(f"job 結束: {text}")

print("開始")
thread = threading.Thread(target=job, args=("Hello",)) # 建立執行緒,執行緒的工作函數是 job,參數是 "Hello"
thread.start() # 開始執行執行緒

print("等待執行緒結束")
thread.join() # 等待執行緒結束

print("結束")
    



參考資料:
docs.python - threading — Thread-based parallelism

留言