共計 987 個字符,預計需要花費 3 分鐘才能閱讀完成。
Python 中有多種方法可以實現多線程同步,以下是其中幾種常用的方法:
- Lock(鎖):使用 threading 模塊中的 Lock 類,可以實現簡單的線程鎖來保護共享資源。通過 acquire() 方法獲取鎖,使用完成后使用 release() 方法釋放鎖。
import threading
# 共享資源
shared_resource = 0
# 創建鎖
lock = threading.Lock()
# 線程函數
def thread_func():
global shared_resource
# 獲取鎖
lock.acquire()
try:
# 修改共享資源
shared_resource += 1
finally:
# 釋放鎖
lock.release()
- Condition(條件):使用 threading 模塊中的 Condition 類,可以實現更復雜的線程同步。Condition 類使用了 Lock 類,并提供了 wait()、notify() 和 notify_all() 等方法來控制線程等待和喚醒。
import threading
# 共享資源
shared_resource = 0
# 創建條件
condition = threading.Condition()
# 線程函數
def thread_func():
global shared_resource
# 獲取條件鎖
with condition:
# 修改共享資源
shared_resource += 1
# 通知其他等待線程
condition.notify_all()
- Semaphore(信號量):使用 threading 模塊中的 Semaphore 類,可以控制對共享資源的訪問數量。Semaphore 類初始化時傳入一個計數器,每次調用 acquire() 方法會將計數器減一,當計數器為 0 時,后續線程將被阻塞。
import threading
# 共享資源
shared_resource = 0
# 創建信號量
semaphore = threading.Semaphore(1)
# 線程函數
def thread_func():
global shared_resource
# 獲取信號量
semaphore.acquire()
try:
# 修改共享資源
shared_resource += 1
finally:
# 釋放信號量
semaphore.release()
這些方法都可以實現多線程的同步,具體選擇哪種方法取決于具體的應用場景和需求。
丸趣 TV 網 – 提供最優質的資源集合!
正文完