Python 程式在一般情況下是「同步」的,程式會一步一步執行,等到每一步結束後才會再繼續下一個動作。
執行結果:
但是有的時候我們需要讓多個程式碼片段同時執行,這時候就可以使用到多執行緒,將某些程式碼放到其他執行緒來執行。
例如下面的範例程式碼中,我們就啟動了一個新的執行緒來執行 job 函數:
所以在執行時會發現 job 函數的事情還沒做完就已經印出「結束」了
如果要等待執行緒結束可以使用下面的程式碼:
在建立執行緒時也可以傳入函數的參數:
參考資料:
docs.python - threading — Thread-based parallelism
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
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com