【说站】python GIL锁的底层原理探究
2024-12-01
21
python GIL锁的底层原理探究
释放GIL锁原理分析
1、在单核CPU下,这种情况并不特别糟糕。由于只有一个CPU,CPU的利用率非常高。
2、在多核CPU下,由于GIL锁的整体特性,无法发挥多核特性,GIL锁大大降低了多线程任务的效率。
尽管全部释放GIL锁,但是这两种情况是不同的。例如,Thread1遇到IO操作释放GIL,由Thread2和Thread3来竞争GIL锁,Thread1将不再参与这场竞争。假如是Thread1因为TimeTick过期而释放GIL(大多数是CPU密集任务),那么三个线程就能同时竞争GIL锁,这可能会导致Thread1在竞争中获胜并重新执行。
线程释放GIL锁有两种情况
一种是IO操作,另一种是TimeTick过期。IO操作很好理解,比如发出http请求,等待响应。那么什么是TimeTick过期呢?TimeTick规定了线程的最长执行时间,超过时间后自动释放GIL锁。Python3之后,间隔时间约为15毫秒。
以上就是python GIL锁的底层原理探究,希望对大家有所帮助。更多Python学习指路:python基础教程
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
更新于:25天前赞一波!2
相关文章
- 【说站】java中RMI的原理分析
- 【说站】Python中SKlearn是什么
- 【说站】Python findall函数如何匹配字符串
- 【说站】Python如何提取字符串的内容
- 【说站】SKlearn如何在python安装?
- 【说站】python文件的三大访问方式
- 【说站】python中Pycharm的快捷键及用法
- 【说站】python整数的用法整理
- 【说站】python中Locust的安装和使用
- 【说站】python中DataFrame的运算总结
- 【说站】python中Pycharm如何调试视图
- 【说站】python中pandas有哪些功能特色
- 【说站】Python pandas和numpy的区别
- 【说站】python数据离散化是什么
- 【说站】python数据拼接如何实现
- 【说站】python中pandas排序的两种形式
- 【说站】python使用required定义必填字段
- 【说站】python marshmallow如何提供默认值
- 【说站】python dump方法的序列化
- 【说站】python中的Locust是什么
文章评论
评论问答