欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Python不能利用多核的問題以后能被解決嗎

錢淋西2年前12瀏覽0評論

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

希望我的回答能夠幫到你。