Python的print()
函數本身是線程安全的,可以在多線程環境中使用。但是,當多個線程同時調用print()
函數時,輸出的順序可能會發生變化,因為線程調度是由操作系統控制的,你不能預測哪個線程會先執行。
如果你需要確保多個線程的輸出順序,可以使用threading.Lock
對象來實現線程同步。下面是一個簡單的例子:
import threading
# 創建一個鎖對象
print_lock = threading.Lock()
def print_thread(message):
# 獲取鎖
with print_lock:
# 在此區域內,只有一個線程可以執行print()函數
print(message)
# 創建兩個線程
thread1 = threading.Thread(target=print_thread, args=("Thread 1",))
thread2 = threading.Thread(target=print_thread, args=("Thread 2",))
# 啟動線程
thread1.start()
thread2.start()
# 等待線程結束
thread1.join()
thread2.join()
在這個例子中,我們使用了with
語句來自動獲取和釋放鎖。當一個線程獲得鎖后,其他線程必須等待鎖被釋放才能繼續執行。這樣可以確保print()
函數在多線程環境中按照預期的順序執行。