在Python中,可以使用threading
模塊來實現多線程共享變量。
下面是一個簡單的例子,展示了如何使用多線程共享變量:
import threading
# 全局變量
counter = 0
def increment():
global counter
for _ in range(100000):
# 對共享變量加鎖
with lock:
counter += 1
# 創建鎖對象
lock = threading.Lock()
# 創建兩個線程
thread1 = threading.Thread(target=increment)
thread2 = threading.Thread(target=increment)
# 啟動線程
thread1.start()
thread2.start()
# 等待線程結束
thread1.join()
thread2.join()
# 打印最終結果
print("Counter: ", counter)
在這個例子中,我們定義了一個全局變量counter
,并創建了兩個線程來對其進行操作。increment
函數會循環100000次,并在每次循環中使用with lock
語句對共享變量進行加鎖,以確保在修改共享變量時不會發生競爭條件。
在主線程中,我們啟動了兩個線程,并使用join
方法等待它們的結束。最后,我們打印出最終的計數器值。
需要注意的是,在多線程編程中,共享變量的并發訪問可能導致競爭條件,因此需要使用鎖或其他同步機制來保證共享變量的一致性。在Python中,threading.Lock
對象可以用來創建鎖,并使用with
語句來自動管理鎖的獲取和釋放。