GIL锁与自定义互斥锁
Posted zhouhao666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIL锁与自定义互斥锁相关的知识,希望对你有一定的参考价值。
Gil锁保证内存管理数据安全,不能保证所有数据的安全,不同的数据要加不同的锁
from threading import Thread,Lock import time mutex=Lock() n=100 def task(): global n temp=n time.sleep(0.1) n=temp-1 if __name__ == ‘__main__‘: l=[] for i in range(100): t=Thread(target=task) l.append(t) t.start() for t in l: t.join() print(n) 结果: 99
自定义互斥锁可以保证相关数据安全,但是效率变低了
from threading import Thread,Lock import time mutex=Lock() n=100 def task(): global n with mutex: temp=n time.sleep(0.1) n=temp-1 if __name__ == ‘__main__‘: l=[] for i in range(100): t=Thread(target=task) l.append(t) t.start() for t in l: t.join() print(n) 结果: 0
以上是关于GIL锁与自定义互斥锁的主要内容,如果未能解决你的问题,请参考以下文章
27 Apr 18 GIL 多进程多线程使用场景 线程互斥锁与GIL对比 基于多线程实现并发的套接字通信 进程池与线程池 同步异步阻塞非阻塞