问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python中的各种锁?

发布网友 发布时间:2022-04-24 10:04

我来回答

1个回答

热心网友 时间:2022-04-06 04:57

大致罗列一下:
一、全局解释器锁(GIL)
1、什么是全局解释器锁
每个CPU在同一时间只能执行一个线程,那么其他的线程就必须等待该线程的全局解释器,使用权消失后才能使用全局解释器,即使多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全局解释器锁(GIL)。GIL的设计简化了CPython的实现,使的对象模型包括关键的内建类型,如:字典等,都是隐含的,可以并发访问的,锁住全局解释器使得比较容易的实现对多线程的支持,但也损失了多处理器主机的并行计算能力。
2、全局解释器锁的好处
1)、避免了大量的加锁解锁的好处
2)、使数据更加安全,解决多线程间的数据完整性和状态同步
3、全局解释器的缺点
多核处理器退化成单核处理器,只能并发不能并行。
4、GIL的作用:
多线程情况下必须存在资源的竞争,GIL是为了保证在解释器级别的线程唯一使用共享资源(cpu)。
二、同步锁
1、什么是同步锁?
同一时刻的一个进程下的一个线程只能使用一个cpu,要确保这个线程下的程序在一段时间内被cpu执,那么就要用到同步锁。
2、为什么用同步锁?
因为有可能当一个线程在使用cpu时,该线程下的程序可能会遇到io操作,那么cpu就会切到别的线程上去,这样就有可能会影响到该程序结果的完整性。
3、怎么使用同步锁?
只需要在对公共数据的操作前后加上上锁和释放锁的操作即可。
4、同步锁的所用:
为了保证解释器级别下的自己编写的程序唯一使用共享资源产生了同步锁。
三、死锁
1、什么是死锁?
指两个或两个以上的线程或进程在执行程序的过程中,因争夺资源或者程序推进顺序不当而相互等待的一个现象。
2、死锁产生的必要条件?
互斥条件、请求和保持条件、不剥夺条件、环路等待条件
3、处理死锁的基本方法?
预防死锁、避免死锁(银行家算法)、检测死锁(资源分配)、解除死锁:剥夺资源、撤销进程
四、递归锁
在Python中为了支持同一个线程中多次请求同一资源,Python提供了可重入锁。这个RLock内部维护着一个Lock和一个counter变量,counter记录了acquire的次数,从而使得资源可以被多次require。直到一个线程所有的acquire都被release,其他的线程才能获得资源。递归锁分为可递归锁与非递归锁。
五、乐观锁
假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
六、悲观锁
假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
python常用的加锁方式:互斥锁、可重入锁、迭代死锁、互相调用死锁、自旋锁。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? python初学者遇到的弱智问题 python输入过程中怎么取消已输入的错误字符? 博学谷Python系列项目实战-64-撤销和恢复撤销 如何评价朱一龙、童瑶、王志文主演的电视剧《叛逆者》? “毛*说过“最后的胜利往往在于再坚持一下的努力之中””出自哪本书? 论持久战的发表实际上是对什么的发展 《论持久战》的经典句子“敌退我进”后的4句话是什么? 论持久战的作品影响 《论持久战》是在怎样的背景下产生的? 凡事预则立,不预则废。你是如何评价这句话? 毛主席写论持久战一书的意义? 论持久战主要内容及其指导意义1200字 《论持久战》经典句子的哲学道理。 《论持久战》的评价 论持久战的主要内容及其意义 毛泽东《论持久战》一文的主要内容及意义 如何评价《论持久战》? 如何评价《论持久战》 夏天是不是减肥的好季节? 喝什么茶四季都可以减肥? 大神可以给我介绍一下Python IDLE怎么用吗? 用python绘制一个“登录”GUI界面,可以注册和登录,且有“取消”按钮,可... python中 easygui.choicebox运行后,交互界面为什么会返回【OK】或者【0】,这个可以取消吗? Python 的 unittest 手机上的Python怎么运行操作,代码在电脑上运行的出手机却不行_百度知... python能实现并行吗 python中import的模块可以取消import吗 python3中取消了内置的file数据类型 python代码块如何整体缩进,又如何整体取消缩进 clo3d软件快捷键 大家,皮炎,湿疹和癣到底是什么关系 癣是怎么引起的? 皮肤有癣是怎么引起的? 皮癣是怎么引起的?需要怎么注意 介绍皮肤癣的病因具体有哪些 请问大家,皮炎,湿疹和癣到底是什么关系?有什么特征?怎么区分?该用什么... 有关皮肤癣的问题 皮肤癣是怎么形成的? 皮肤癣的危害有哪些呢 请问皮肤干癣是怎么回事