<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python之父:明年讓Python快2倍

          共 2919字,需瀏覽 6分鐘

           ·

          2021-05-29 00:17

          點擊上方視學算法”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          博雯 發(fā)自 凹非寺
          量子位 報道 | 公眾號 QbitAI

          5月中旬剛剛結(jié)束的Pycon US 2021上,Python之父Guido van Rossum提出要在未來四年內(nèi)將CPython速度提升5倍。

          而這一“Shannon計劃”的參與者除了Guido本人之外,還有任職微軟的CPython核心開發(fā)人員Eric Snow,以及Semmle的研究工程師Mark Shannon。

          但在此之前,Guido可并不認為提升CPython的速度有多關(guān)鍵,因為“有其他方法可以獲得更好的性能”,比如JIT編譯的PyPy,或使用C語言編寫擴展。

          為什么要加速?

          Python真的慢嗎?

          不見得,開發(fā)效率和執(zhí)行速度本就難以兼得。

          而且發(fā)展到今天,Python已經(jīng)是一個膠水語言的定位,主要用來快速構(gòu)建系統(tǒng)的邏輯控制流,再把對性能要求高的部分丟給C/C++來實現(xiàn)。

          不過如果只看標準版的語言實現(xiàn)本身的話……它的性能確實不怎么樣。

          動態(tài)語言的特性決定了Python會在C語言代碼運行(runtime)上花費大量的時間,且難以使用JIT(Just-In-Time)進行優(yōu)化。

          在接受英國技術(shù)新聞網(wǎng)站The Register的采訪時,對于“為什么開始關(guān)注CPython性能?”的問題,Shannon表示:

          過去幾年里,Python在機器學習領(lǐng)域的使用率大大提升,可用資源也越來越多。這意味著我們可以不用擔心破壞其可靠性,而是專注在性能上。

          并且,Shannon之前參與的HotPy項目中所開發(fā)的解釋器,比目前CPython解釋器的純Python代碼快三倍。這證明了對CPython優(yōu)化的可行性。

          而在去年10月份的時候,耐不住退休寂寞的Guido又加入了微軟:

          再加上疫情的家里蹲buff,擁有了更多時間的大佬們一拍即合,決定Make Python Great Again。

          加速之前的挑戰(zhàn)

          Shannon坦言,向下兼容是加速Python的最大挑戰(zhàn)。

          其實不僅是對Python,90年代末libc的那次不兼容更新,直接導致所有應(yīng)用程序都要重編……

          而現(xiàn)在已經(jīng)涼涼的Pyston,官方文章里提到的Dropbox放棄Pyston項目的幾大因素中,第一個也是:

          這就是所有既試圖兼容CPython,又想大幅提升性能的Python都會遇到的嚴峻問題。

          因為Python的執(zhí)行類似于HTML渲染:更多是對運行時應(yīng)如何執(zhí)行C庫的描述,而非單步執(zhí)行命令。

          所以,Python性能提升的源頭來自于這些C擴展模塊。而CPython又有著超過400k的loc,這意味著要從底層去做優(yōu)化是一項非常龐大的工程。

          特別是對于過于動態(tài)的Python語言來說,語言的語義對優(yōu)化的影響就更大了。

          而現(xiàn)在加速的過程中,像是CPython的工具、調(diào)試器、配置文件,NumPy包,以及Cython這樣的編譯器,又會有多少涉及到CPython內(nèi)部和底層的行為?

          因此Shannon表示:

          要改變是困難的……與CPython用戶間的隱形協(xié)議并沒有很好地定義什么能改,什么不能改。

          可能是五年前從Python2.x遷移到3的痛苦經(jīng)歷實在是有些刻骨銘心,Guido專門發(fā)推表示這次的遷移會更加平和。

          而他也在Python峰會中承諾:不破壞stable ABI兼容性;不破壞limited API兼容性;不破壞或減緩extreme cases。

          “總之,代碼的可維護性才是第一要務(wù)。”

          Python的5倍速之路

          按照已在GitHub上發(fā)布的faster-cpython,Shannon計劃具體分為四個階段:

          Python 3.10

          預計在今年10月發(fā)布,主要添加一個自適應(yīng)、專業(yè)化的解釋器(interpreter)

          解釋器將不再遇運行時生成代碼,而是利用程序中的類型穩(wěn)定性,在執(zhí)行過程中適應(yīng)類型和數(shù)值。

          Python 3.11

          Guido提出要在3.11版本實現(xiàn)至少2倍的提速,為此,他已經(jīng)和幾位Python開發(fā)人員提出了一份增強功能的提案PEP 659

          這一提案中表示要增加適應(yīng)性的字節(jié)碼解釋器,并且實施更有效的異常處理。

          除此之外,還提出了優(yōu)化幀堆棧、改變函數(shù)調(diào)用的方式、增加優(yōu)化以加快啟動時間,以及修改 .pyc 字節(jié)碼緩存文件格式等工作。

          Python 3.12

          這一階段使用針對小區(qū)域的JIT解釋器,在運行代碼時簡單、快速地對小區(qū)域的專門代碼進行編譯。

          Python 3.13

          同樣在代碼運行時對擴展區(qū)域進行編譯,增強編譯器,以完成5倍的超級加速。

          Guido表示此次圍繞性能展開的 Python 變更,將主要服務(wù)于運行CPU密集型純Python代碼的開發(fā)者,以及內(nèi)置Python網(wǎng)站的用戶。

          而在C語言代碼(如 NumPy和TensorFlow)、I/O 綁定代碼、多線程代碼以及算法代碼上,提升效果將會比較有限。

          微軟回饋Python

          其實,微軟長期以來一直以多種方式為Python項目提供助力,包括在Azure云AI服務(wù)教程里發(fā)布免費的Python課程,以及通過VS Code Python擴展在Win10及以上版本支持Python。

          自 2006 年起,微軟還成為了Python軟件基金會(PSF)的贊助商,并在今年出資15 萬美元進行資助。

          目前已有五位Python開發(fā)者社區(qū)的核心人員在微軟任職,包括去年年底加入的Python之父,和這次Shannon計劃里的三人之一Eric Snow。

          Guido也在這次峰會里特地cue了一下微軟,提出微軟資助了一支小型Python團隊“負責語言解釋層面的性能改進工作”,以使他能攜手微軟同事持續(xù)對Python進行開發(fā)。

          當然,對于3.11版本的短期目標,Guido還是在ppt中給自己兜了個底。

          “樂觀一點,好奇一點總沒錯”

          而對于那個四年五倍速的最終目標,Guido則表示“我們必須保持旺盛的創(chuàng)造力。”

          參考鏈接:
          [1]https://www.theregister.com/2021/05/19/faster_python_mark_shannon_author/

          [2]https://pyfound.blogspot.com/2021/05/the-2021-python-language-summit-pep-654.html
          [3]https://www.python.org/dev/peps/pep-0654/

          Python version 3.11.0 alpha 0:
          https://github.com/faster-cpython/ideas

          “A faster CPython”計劃簡介:
          https://github.com/markshannon/faster-cpython

          本文系網(wǎng)易新聞?網(wǎng)易號特色內(nèi)容激勵計劃簽約賬號【量子位】原創(chuàng)內(nèi)容,未經(jīng)賬號授權(quán),禁止隨意轉(zhuǎn)載。


          點個在看 paper不斷!

          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲第一在线观看视频 | www.亚洲色 | 色网在线观看 | 操逼逼在线 | 操逼操逼操逼操逼操逼操逼 |