python使用互斥锁处理资源分配

Python (178) 2023-05-28 19:10:36

1、threading模块中定义了Lock类,可以实现锁

创建锁对象: mutex = threading.Lock()

上锁: mutex.acquire()

释放锁: mutex.release()

2、注意

如果这个锁之前是没有上锁的,那么acquire就不会阻塞

如果调用acquire之前这个锁是被其它线程上了锁的,那么acquire就会阻塞,直到这个锁被释放

3、实例

importthreading
importtime

num=0
defcount_test1():
globalnum
foriinrange(100000):
mutex.acquire()
num+=1
mutex.release()
print("count_test1-->num:%s"%num)

defcount_test2():
globalnum
foriinrange(100000):
mutex.acquire()
num+=1
mutex.release()
print("count_test2-->num:%s"%num)

mutex=threading.Lock()
t1=threading.Thread(target=count_test1)
t2=threading.Thread(target=count_test2)

t1.start()
t2.start()

t1.join()
t2.join()

print("最终的num:%s"%num)

以上就是python使用互斥锁处理资源分配,希望能对大家有所帮助,更多知识尽在python学习网。

THE END

发表回复