栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【时间之外】3分钟搞懂python的5种进程锁

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【时间之外】3分钟搞懂python的5种进程锁

碎片化时代,无论是生活中,还是代码中,锁的概念无处不在。大家都是在不断的锁与解锁中奋斗自己的生活,为了节省大家的时间,这里花1分钟搞懂python的5种进程锁。

目录

锁的概念

5种锁

联系


锁的概念

进程在这里就不多解释了,如果不涉及到多线程编程,就可以忽略此文了。锁是为了代码上的进程安全,比较容易理解的一个例子是:当没有锁的时候,两个进程同时对一个num进行加1和减1操作,10000次以后,会发现结果是不等于0的。

一个更易理解的生活例子是:一个房间(进程)中有10颗糖(资源),有3个小人(1个主线程、2个子线程),当小人A吃了3颗糖后被系统强制进行休息时他认为还剩下7颗糖,而当小人B工作后又吃掉了3颗糖,那么当小人A重新上岗时会认为糖还剩下7颗,但是实际上只有4颗了。

5种锁

python中自然也少不了进程锁,按照功能,分为下面的5种:

  • 同步锁:lock(一次只能放行一个)
  • 递归锁:rlock(一次只能放行一个)
  • 条件锁:condition(一次可以放行任意个)
  • 事件锁:event(一次全部放行)
  • 信号量锁:semaphore(一次可以放行特定个)

联系

同步锁是基础,主要是实现访问者对资源的有序访问,记住acquire和release,后面会经常用到。

递归锁是同步锁的升级,在同步锁的基础上可以做到连续重复使用多次acquire()后再重复使用多次release()的操作,但是加锁次数和解锁次数必须一致,否则也将引发死锁现象。

条件锁是在递归锁的基础上增加了能够暂停线程运行的功能。并且我们可以使用wait()与notify()来控制线程执行的个数。

事件锁是基于条件锁来做的,它与条件锁的区别在于一次只能放行全部,不能放行任意个数量的子线程继续运行。我们可以将事件锁看为红绿灯,当红灯时所有子线程都暂停运行,并进入“等待”状态,当绿灯时所有子线程都恢复“运行”。

信号量锁也是根据条件锁来做的,与上面的锁的区别在于:通过规定,成批的放行特定个处于“上锁”状态的线程,个人认为是事件锁的升级版。

具体这些锁的应用及代码,本文就不详述了,有兴趣的朋友可以参考下文:

Python 中最常用的 5 种线程锁你会用吗?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号