Python 多執行緒,(全域性變數)資料共享,threading.Lock() 互斥鎖
阿新 • • 發佈:2018-11-22
demo.py(互斥鎖):
import threading import time # 定義一個全域性變數 g_num = 0 def test1(num): global g_num # 全域性變數可以實現執行緒間資料共享。也可以通過傳參實現 for i in range(num): mutex.acquire() # 上鎖 g_num += 1 mutex.release() # 解鎖 print("-----in test1 g_num=%d----" % g_num) def test2(num): global g_num for i in range(num): mutex.acquire() # 上鎖 g_num += 1 mutex.release() # 解鎖 print("-----in test2 g_num=%d=----" % g_num) # 建立一個互斥鎖,預設是沒有上鎖的 mutex = threading.Lock() def main(): t1 = threading.Thread(target=test1, args=(1000000,)) t2 = threading.Thread(target=test2, args=(1000000,)) t1.start() t2.start() # 等待上面的2個執行緒執行完畢.... time.sleep(2) print("-----in main Thread g_num = %d---" % g_num) if __name__ == "__main__": main()