Python 的 print
函數本身不是線程安全的。在多線程環境下,如果多個線程同時調用 print
函數,可能會導致輸出結果混亂。為了在多線程環境下安全地使用 print
,你需要使用鎖(Lock)或其他同步機制來確保同一時間只有一個線程可以執行 print
函數。
以下是一個使用鎖來實現線程安全的 print
函數的示例:
import threading
# 創建一個鎖對象
print_lock = threading.Lock()
def safe_print(*args, **kwargs):
# 獲取鎖
with print_lock:
# 在鎖保護下執行 print 函數
print(*args, **kwargs)
# 定義兩個線程
def thread1():
for i in range(5):
safe_print("Thread 1:", i)
def thread2():
for i in range(5):
safe_print("Thread 2:", i)
# 創建并啟動線程
t1 = threading.Thread(target=thread1)
t2 = threading.Thread(target=thread2)
t1.start()
t2.start()
# 等待線程結束
t1.join()
t2.join()
在這個示例中,我們使用了一個名為 print_lock
的鎖對象來確保同一時間只有一個線程可以執行 safe_print
函數。這樣就可以避免輸出結果混亂的問題。