在Python中,應用程序通常只運行在單個執行緒上,除非你明確啟用了多執行緒。
為什麼要使用多執行緒呢?在Python中,代碼是按照順序運行的,一個指令接著一個指令執行。
如果你定義了一個睡眠3秒然後打印信息的函數,像這樣:
import time
def greet():
time.sleep(3)
print('hello')
greet()
print('world')
world
字符串將在3秒後打印出來,因為我們在greet()
函數中調用了time.sleep(3)
。
這只是一個簡單的例子,但想象一下處理圖像、從網絡獲取資源或將大文件寫入磁盤等耗時的任務,這些都需要較長的時間。
通過使用多執行緒,我們可以將耗時的函數運行在單獨的執行緒中,同時繼續執行主程序。
threading
標准庫模塊能夠幫助我們實現多執行緒。你可以從中導入Thread
:
from threading import Thread
然後,我們將要執行的函數作為target
參數傳遞給Thread()
函數,以獲得一個執行緒對象:
t = Thread(target=greet)
接下來,我們調用它的start()
方法來啟動這個執行緒:
t.start()
試著運行下面的代碼:
from threading import Thread
import time
def greet():
time.sleep(3)
print('hello')
t = Thread(target=greet)
t.start()
print('world')
你會發現world
比hello
早3秒打印出來。
除非你將執行緒設置為守護線程,否則程序將一直運行,直到該執行緒(或它開啟的所有其他執行緒)結束。
這就是多執行緒的基本介紹。雖然強大,但如果使用不當,很容易引入錯誤。