专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 4:31:09       共计:3572 浏览

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等。

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

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:chrome浏览器控件用什么语言开发_java | ·下一条:准备自学IT软件开发_python

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有