python GIL锁的底层原理探究
- 更新时间:2021-06-19 10:25:03
- 编辑:宫悦淇
给寻找编程代码教程的朋友们精选了相关的编程文章,网友戈文敏根据主题投稿了本篇教程内容,涉及到Python相关内容,已被905网友关注,涉猎到的知识点内容可以在下方电子书获得。
参考资料
- Python程序设计与算法基础教程 PDF 电子书 / 107.6 MB / 江红、余青松 推荐度:
- Python少儿趣味编程:海龟绘图 PDF 电子书 / 3.22 MB MB / 李强 推荐度:
- 预测分析建模:Python与R语言实现 PDF 电子书 / 79.4 MB / 托马斯 推荐度:
- 人人都懂设计模式:从生活中领悟设计模式(Python实现) PDF 电子书 / 31.6 MB / 罗伟富 推荐度:
- 《Python机器学习》配套资源 配套资源 / 30.28 MB / 阿布舍克·维贾亚瓦吉亚 推荐度:
正文内容
给学习python的读者整理一篇《python GIL锁的底层原理探究》优秀文章,实例用法很详细,把代码做了调试发布出来,为了大家阅读方便。
1、线程释放GIL锁有两种情况
一种是IO操作,另一种是TimeTick过期。IO操作很好理解,比如发出http请求,等待响应。那么什么是TimeTick过期呢?TimeTick规定了线程的最长执行时间,超过时间后自动释放GIL锁。Python3之后,间隔时间约为15毫秒。
2、释放GIL锁原理分析
尽管全部释放GIL锁,但是这两种情况是不同的。例如,Thread1遇到IO操作释放GIL,由Thread2和Thread3来竞争GIL锁,Thread1将不再参与这场竞争。假如是Thread1因为TimeTick过期而释放GIL(大多数是CPU密集任务),那么三个线程就能同时竞争GIL锁,这可能会导致Thread1在竞争中获胜并重新执行。在单核CPU下,这种情况并不特别糟糕。由于只有一个CPU,CPU的利用率非常高。
在多核CPU下,由于GIL锁的整体特性,无法发挥多核特性,GIL锁大大降低了多线程任务的效率。
以上就是python GIL锁的底层原理探究,希望对大家有所帮助。
相关教程
-
Python实现的序列化和反序列化二叉树算法示例
给网友朋友们带来一篇关于Python的教程,这篇文章主要介绍了Python实现的序列化和反序列化二叉树算法,结合实例形式分析了Python二叉树的构造、遍历、序列化、反序列化等相关操作技巧,需要的朋友可以参考下
发布时间:2022-10-20
-
Python正则表达式匹配和提取IP地址
这篇文章主要介绍了Python正则表达式匹配和提取IP地址的实例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
发布时间:2019-06-27