在Python中,多線程同步機制主要使用threading
模塊中的鎖(Lock)來實現(xiàn)。鎖可以確保多個線程在訪問共享資源時不會發(fā)生沖突。下面是一個簡單的例子,展示了如何使用鎖來同步多線程:
import threading
# 創(chuàng)建一個鎖對象
lock = threading.Lock()
# 共享資源
shared_resource = 0
def thread_function():
global shared_resource
# 獲取鎖
lock.acquire()
try:
# 臨界區(qū)
for _ in range(100000):
shared_resource += 1
finally:
# 釋放鎖
lock.release()
# 創(chuàng)建10個線程
threads = []
for _ in range(10):
t = threading.Thread(target=thread_function)
threads.append(t)
t.start()
# 等待所有線程結(jié)束
for t in threads:
t.join()
print("共享資源的值:", shared_resource)
在這個例子中,我們創(chuàng)建了一個鎖對象lock
和一個共享資源shared_resource
。thread_function
是線程要執(zhí)行的任務,它使用lock.acquire()
獲取鎖,然后在臨界區(qū)(這里是一個循環(huán),用于增加共享資源的值)內(nèi)執(zhí)行操作。最后,使用lock.release()
釋放鎖。這樣可以確保在多個線程同時訪問共享資源時,每次只有一個線程能夠進入臨界區(qū),從而避免了沖突。
需要注意的是,鎖的使用可能會導致性能下降,因為它會限制多個線程同時執(zhí)行。在實際應用中,需要根據(jù)具體情況權(quán)衡鎖的使用。另外,Python還提供了其他同步原語,如信號量(Semaphore)、事件(Event)等,可以根據(jù)需求選擇合適的同步機制。