首页后端开发PythonPython不能利用多核的问题以后能被解决吗

Python不能利用多核的问题以后能被解决吗

时间2023-06-06 19:03:02发布访客分类Python浏览249
导读:Python不能利用多核的问题以后能被解决吗?我是米小乐小米,你的问题我来回答。首先,更正一下你的问题中的说法,python并不是不能利用多核,而是,多核的利用效率很低。其次,要回答这个问题,首先你要了解一个概念——全局解释器锁(GIL)。...

Python不能利用多核的问题以后能被解决吗?

我是米小乐小米,你的问题我来回答。

首先,更正一下你的问题中的说法,python并不是不能利用多核,而是,多核的利用效率很低。

其次,要回答这个问题,首先你要了解一个概念——全局解释器锁(GIL)。

转一篇关于Python GIL的文章。

归纳一下,CPU的大规模电路设计基本已经到了物理意义的尽头,所有厂商们都开始转向多核以进一步提高性能。Python为了能利用多核多线程的的优势,但又要保证线程之间数据完整性和状态同步,就采用了最简单的加锁的方式(所以说Python的GIL是设计之初一时偷懒造成的!)。Python库的开发者们接受了这个设定,即默认Python是thread-safe,所以开始大量依赖这个特性,无需在实现时考虑额外的内存锁和同步操作。但是GIL的设计有时会显得笨拙低效,但是此时由于内置库和第三方库已经对GIL形成了牢不可破的依赖,想改革GIL反而变得困难了(晕!)。所以目前的现状就是,Python的多线程在多核CPU上,只对于IO密集型计算产生正面效果;而当有至少有一个CPU密集型线程存在,那么多线程效率会由于GIL而大幅下降。虽然Python社区也在不断为此努力改进,但恐怕短时间内不会有改变,所以想规避GIL的,可以使用多进程的multiprocessing或concurrent.futures模块,或者换个Python的解析器。

所以说,不管python的官方解释器在将来对这个问题有没有什么改进,现在你就可以有一些解决的办法。

可以使用一些没有GIL的Python的解析器有:JPython,IronPython等。

希望我的回答能够帮到你。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Python不能利用多核的问题以后能被解决吗
本文地址: https://pptw.com/jishu/64356.html
如何用PYTHON判断字符串是否回文 python语法基础知识

游客 回复需填写必要信息