1. 程式人生 > >Python 多執行緒,(全域性變數)資料共享,threading.Lock() 互斥鎖

Python 多執行緒,(全域性變數)資料共享,threading.Lock() 互斥鎖

 

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()