# -*- 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)
python中线程使用与全局变量加锁
最新推荐文章于 2024-08-22 10:57:31 发布
本文详细介绍了在Python中如何使用互斥锁(mutex)进行线程间的同步,防止多个线程同时修改全局变量导致的数据不一致问题。通过两个函数func1和func2的实例,展示了如何在循环中正确地获取和释放锁,确保数据的安全性和一致性。
1498

被折叠的 条评论
为什么被折叠?



