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

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/84326493
今日推荐