python中线程使用与全局变量加锁

# -*- coding:utf-8 -*-
import threading
import time
from time import sleep, ctime

g_num = 0
# 创建互斥锁,默认不上锁
mutex = threading.Lock()


def func1(num):
    global g_num
    for i in range(num):
        mutex.acquire()  # 上锁
        g_num += 1
        mutex.release()  # 解锁
    print('--func1--g_num:%d' % g_num)


def func2(num):
    global g_num
    for i in range(num):
        mutex.acquire()
        g_num += 1
        mutex.release()
    print('--func2--g_num:%d' % g_num)


if __name__ == "__main__":
    t1 = threading.Thread(target=func1, args=(100000,))
    t1.start()
    t2 = threading.Thread(target=func2, args=(100000,))
    t2.start()

    while True:
        length = len(threading.enumerate())
        print('now the all thread:%d' % length)
        if length <= 1:
            break

        sleep(1)

    print('the result--%d' % g_num)

猜你喜欢

转载自blog.csdn.net/yuxing55555/article/details/87691364
今日推荐