
文 | 羅奇奇,出品 | OSC開源社區(qū)(ID:oschina2013)在退休又復(fù)出加入微軟的 Faster CPython 團(tuán)隊后, Python 之父 Guido van Rossum 在 2021 年 Python 語言峰會上放下狠話,稱團(tuán)隊將在 Python 3.11 版本中實現(xiàn)至少提速 1 倍的進(jìn)展。
而在今年的 Python 語言峰會上,Guido 和團(tuán)隊搭檔 Mark Shannon 匯報了最新的進(jìn)展:對比 3.10 版本,CPython 3.11 的提速在?10 - 60% 之間,具體速度取決于代碼規(guī)模和工作領(lǐng)域等條件。當(dāng)使用 pyperformance 基準(zhǔn)套件測量在 Ubuntu Linux 上使用 GCC 編譯時, CPython 3.11 平均比 CPython 3.10?快 25% 。CPython 3.11 的性能改進(jìn)主要集中在更快的啟動和更快的運(yùn)行時,這些優(yōu)化大部分來自于?PEP 659??:自適應(yīng)解釋器,它運(yùn)作思路跟 JIT 有點(diǎn)相似,都是識別熱點(diǎn)代碼,但自適應(yīng)解釋器的工作范圍無法脫離字節(jié)碼。目前 PEP 659 提案的工作基本完成,但 for 循環(huán)和二進(jìn)制操作的動態(tài)優(yōu)化仍有待完成。在提速 25% 的同時,Python 3.11 仍有一些需要改善的地方,比如 Python 在 3.11 中的內(nèi)存消耗與 3.10 中的基本相同。此外還需關(guān)注 C 擴(kuò)展的問題:CPython 與 C 的簡單接口是主要優(yōu)勢,而與 C 擴(kuò)展的不兼容性則是一大槽點(diǎn)。而 Faster CPython 團(tuán)隊在 CPython 3.11 中所做的優(yōu)化工作在很大程度上忽略了擴(kuò)展模塊的問題,對此,團(tuán)隊領(lǐng)導(dǎo)者 Shannon 表示,團(tuán)隊正在開辟將低級函數(shù) API 暴露給虛擬機(jī)的可能性,以盡可能地減少 Python 代碼和 C 代碼。至于飽受期待的?JIT 編譯器,Shannon 表示實現(xiàn) JIT 的第一步是實現(xiàn)一個跟蹤解釋器,但目前還有太多需要關(guān)注的項目,引入 JIT 編譯器的工作還有一段路要走,“最早可能要到 3.13 才能到達(dá)”。(順便說一下,Shannon 一直對 CPython 是否真的需要引入 JIT 持懷疑態(tài)度。)有意思的是,昨天我們報道了開發(fā)者 Sam Gross 的新提案:完全移除 CPython 解釋器的?GIL-?全局解釋器鎖?。這個提案和 Faster CPython 團(tuán)隊的工作將以截然不同的方式加速多線程 Python 代碼,但兩者又可能產(chǎn)生一些沖突,畢竟 Faster CPython 已實施的優(yōu)化,很大一部分都基于 GIL 仍存在的前提。注:在去年的核心開發(fā)者 sprint 會議上,核心開發(fā)者們跟 Sam Gross 對 nogil 項目做了一次深入研討,回答了大家較為關(guān)注的諸多問題。具體的會議紀(jì)要,可查看這篇文章——Python 官方研討會:徹底移除 GIL 真的可行么?
- 機(jī)器學(xué)習(xí)交流qq群955171419,加入微信群請掃碼: