学习笔记(26):Python网络编程&并发编程-GIL与自定义互斥锁的区别
2023-09-11 14:21:45 时间
立即学习:https://edu.csdn.net/course/play/24458/296443?utm_source=blogtoedu
1.GIL的基本概念
答:GIL本质上就是一把锁,只是他是一把在python解释器上的锁
2.GIL与互斥锁的区别
答:
1)GIL保护的是在python解释器上的参数,python解释器上的参数是所有的线程共享的数据,不管线程是相同还是不同的进程;
2)互斥锁则是自己定义的线程锁保护的是自己定义的数据
3)下图是只有GIL没有互斥锁的情况,假设线程1首先抢到GIL,但是在运行的时候没能正常运行被强制要求释放GIL,此时线程1处于阻塞状态;而这个时候线程2抢到了GIL并且正常运行了,使得自定义数据count + 1 =1;正常运行线程2释放GIL,这个时候线程1再次获得GIL,重新从解释器开始运行,而这个时候线程1运行的结果也是count=1,可见自定义的数据count没有受到保护
4)GIL与互斥锁同在:多线程首先抢的是GIL全局解释器锁,抢到之后再去抢互斥说
相关文章
- Python使用设计模式中的责任链模式与迭代器模式的示例
- python装饰器实现函数重试
- 华为OD机试 - 相同数字组成图形的周长(Java & JS & Python)
- 华为OD机试 - 最多等和不相交连续子序列(Java & JS & Python)
- 华为OD机试 - 篮球比赛(Java & JS & Python)
- 华为OD机试 - 按索引范围翻转文章片段(Java & JS & Python)
- 华为OD机试 - 可以组成网络的服务器(Java & JS & Python)
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python语言学习:Python语言学习之迭代/递归/OS输入输出/错误&异常处理的简介、案例应用之详细攻略
- Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略
- 蚂蚁群算法求解最短路径问题(Python&Matlab实现)
- 基于蒙特卡洛法的规模化电动车有序充放电及负荷预测(Python&Matlab实现)
- 基于蒙特卡洛法的规模化电动汽车充电负荷预测(Python&Matlab实现)
- 送给她最最浪漫的表白(Python代码实现)
- 牛顿法求方程的根(C&Matlab&Python语言实现)
- 实战案例!使用 Python 进行 RFM 客户价值分析!
- 【华为OD机试Python实现】HJ103 Redraiment的走法(中等)
- C++调用C++项目中的Python脚本中的函数和类。,在,工程,python
- Python编程:查看python环境支持的whl
- Demo of Python "Map Reduce Filter"
- 2022年测试工程师高频面试题及答案【python篇】
- virtualenv 运行python 解决依赖冲突问题 尤其是django那种蛋疼的版本问题
- python 多线程
- 【Python】Visual Studio Code 安装&&使用 hello python~~~~
- 听说你会 Python ?是真的吗?
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 【python】Python实现网络爬虫demo实例
- 〖Python自动化办公篇㉑〗- python实现邮件自动化 - 定时发送邮件
- 牛顿法求方程的根(C&Matlab&Python语言实现)