Python 3.11 ,即將變得更快!
↑ 關(guān)注 + 星標 ,每天學(xué)Python新技能
后臺回復(fù)【大禮包】送你Python自學(xué)大禮包
在去年的 PyCon US 2021 大會上,Python 之父 Guido van Rossum 曾表示:要在 2022 年的 Python 3.11 中,將 Python 速度提高 2 倍,4 年內(nèi),速度提升 5 倍,以解決 Python 與 C++ 等其他編程語言相比在速度上的關(guān)鍵缺點。
如今,速度太慢的情況在 Python 3.11 中即將改變。在今年晚些時候發(fā)布穩(wěn)定版之前,目前正處于其預(yù)覽版(版本 3.11.0b1)的第一個測試階段。
在近期的 PyCon US 2022 會議上,Core Python(CPython)開發(fā)者 Mark Shannon 分享了關(guān)于加速 Python 項目的細節(jié),此外,開發(fā)者還展示了在瀏覽器中運行 Python 代碼這一目標的進展。
去年,微軟資助了 Python 軟件基金會(PSF)的一個項目——“Shannon Plan”,該項目由 Python 創(chuàng)造者 Guido van Rossum 和 Mark Shannon 領(lǐng)導(dǎo),承諾在今年的 Python 3.11 中將其速度提高 2 倍。其愿景是促使 Python 向 C 語言的性能發(fā)展。

微軟在 2020 年聘請了 van Rossum,并讓他自由選擇任何項目。在去年的 PyCon US 2021 會議上,他稱自己 "選擇回到我的根源",并將致力于解決 Python 著名的性能不足問題
性能也許并不是 Python 的首要任務(wù),因為機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的采用得益于 TensorFlow、NumPy、Pandas 以及更多的平臺,如 AWS 的 Boto3 SDK for Python。這些平臺每月被下載數(shù)千萬次,并在通常不受硬件限制的環(huán)境中使用。
Faster CPython項目(GitHub地址:https://github.com/faster-cpython/ideas/blob/main/main-vs-310.rst)提供了一些關(guān)于 CPython 3.11 在過去一年的性能更新。在 PyCon US 2022 會議之前,該項目公布了更多的結(jié)果:在幾十個性能指標上對 3.11 測試預(yù)覽版和 3.10 進行了比較,顯示 3.11.0b1 總體上比 3.10 快 1.25 倍。
Shannon 對該項目提高 Python 性能的能力持現(xiàn)實態(tài)度,但他相信這些改進可以將 Python 的可行用途擴展到更多的虛擬機。他去年在 Python 增強提案(PEP)659 中寫道:“Python 被廣泛認為是緩慢的。
雖然 Python 永遠達不到 C、Fortran 甚至 Java 等低級語言的性能,但我們希望它能與腳本語言的快速實現(xiàn)相媲美,如 Javascript 的 V8 或 Lua 的 LuaJIT。具體來說,我們希望通過 CPython 實現(xiàn)這些性能目標,使所有 Python 用戶受益,包括那些無法使用 PyPy 或其他替代性虛擬機的用戶。”
在 PEP 659 中詳述的關(guān)鍵方法是:“專門化的、自適應(yīng)的解釋器,但它在一個非常小的區(qū)域內(nèi)積極地專門化代碼,并能夠迅速和低成本地適應(yīng)錯誤的專門化。”
如上所述,虛擬機的優(yōu)化是 "昂貴的",往往需要很長的 "預(yù)熱 "時間。為了避免這種時間開銷,虛擬機應(yīng)該推測“即使在一個函數(shù)執(zhí)行幾次后,專門化也是合理的”。所以,解釋器需要持續(xù)地且非常低廉地進行優(yōu)化和去優(yōu)化。
這應(yīng)該會產(chǎn)生一個更快的 CPython 解釋器,它可以在程序執(zhí)行過程中跟蹤單個字節(jié)碼。據(jù) Python 軟件基金會(PSF)稱,新解釋器的工作幾乎已經(jīng)完成,但仍需要完成循環(huán)和二進制操作的動態(tài)專門化。
此外,3.11 的內(nèi)存消耗與 3.10 相比沒有變化。
關(guān)于 Python 性能的即時(JIT)編譯器問題,根據(jù) Python 軟件基金會(PSF)對該事件的報道,Shannon 認為這不是一個優(yōu)先事項,可能最早也要到 Python 3.13 才能實現(xiàn)。
此外,用于數(shù)據(jù)科學(xué)的 Anaconda Python 發(fā)行版的制造商 Anaconda,正在支持 Pyston 項目,該項目是 Python 的一個實現(xiàn),承諾比 Python 有速度上的提高。
Anaconda 在加速 Python 方面較早的努力之一是 Numba 項目,這是一個基于 LLVM 的 CPython JIT 編譯器,它可以加速在 CPU 或 GPU 上運行的 Python 數(shù)值函數(shù),但不能優(yōu)化整個程序,也不能解決更廣泛的 Python 用例。另一個是 PyPy,它是 CPython 的一個實現(xiàn),帶有JIT編譯器以獲得更快的性能。
根據(jù)Faster CPython項目的實施計劃(GitHub地址:https://github.com/markshannon/faster-cpython/blob/master/plan.md),CPython 3.12 可能會獲得一個 "用于小區(qū)域的簡單 JIT 編譯器",在運行時使用相對簡單、快速的編譯器編譯小區(qū)域的專門代碼;而 CPython 3.13 將擴展編譯區(qū)域,增強編譯器以生成卓越的機器代碼。
最后,對于以上 Faster CPython 項目加速 Python 的做法,你有什么看法?歡迎在評論區(qū)留言
參考鏈接:
https://www.zdnet.com/article/programming-languages-python-is-slow-but-its-about-to-get-faster/
- EOF -

