您的位置:首頁>科技>正文

PyPy 雙版本同步更新,不僅僅是快

雷鋒網消息。 PyPy 團隊 21 日通過官方博客正式發佈了兩個全新版本:PyPy2.7 v5.7 和 PyPy3.5 v5.7, 即支援 Python v2.7 語法和 Python v3.5 語法的 PyPy 全新版本解譯器。

據博客介紹, 此次更新的亮點有兩個:

● PyPy3.5 首次引入了對 Python 3 的語法支援;

● PyPy2.7 提升了對 C 擴展包的相容性, 可以直接運行 Numpy、Cython 和 Pandas 等。

大部分做 Python 開發的人或多或少可能都知道 PyPy:一種基於 Python 實現的 python 解譯器。 由於其特有的 JIT 動態編譯, 因此在運行速度上可以輕輕鬆松超過標準解譯器 CPython 好幾倍, 甚至有報導稱在某些極端情況下 PyPy 可以比 CPython 快好幾百倍。 基於這一重大優點, PyPy 團隊長期以來的奮鬥目標一直都是超越 CPython, 成為各種 Python 實現版本中的王者。

但這一夢想一直沒能實現。 究其原因, 一個重要的障礙可能來自版本支持:PyPy 的更新一直落後於 Python 語言的主流版本, 即它並不支援全部的 Python 語法, 而且往往不適配那些最新的特性。 久而久之, 在用戶群裡形成了一個刻板的固有印象:PyPy 只是那些不適配 Python 最新特性的 App 的替代品。

為了扭轉這種並不光彩的固有印象, PyPy 在最新版本中做出了改變。

PyPy3.5 引入 Python 3 支持

改變之一是對 Python 新特性的支持。

在此次更新的 PyPy3.5 版本中, PyPy 開始全面支援 Python 3 的語法, 包括可以更方便地進行非同步程式設計(asynchronous programming)。 不但如此, PyPy3.5 還支持在 Python 3.4 中引入的非同步模組 asyncio(包括 async/await 語法), 而且有評論稱, 相對原版, 該特性在 PyPy 中得到了相當大的性能提升。

另外, 在 Python 3.6 中引入的 f-strings 特性, 也在此次更新的 PyPy3.5 版本中得到了支持。 事實上, f-strings 並非一個普遍受歡迎的特性, 因為它僅僅提供了一個本地字串格式化的簡化選項, 但此次依然獲得了 PyPy3.5 的支持。 這一點或許從另一個側面反映了 PyPy 的改變:如果需要, 未來 PyPy 可以支援更多的最新特性。

對於這些改變,

有評論認為可能是源於去年 Mozilla 基金會授予 PyPy 團隊的高達 20 萬美元的援助資金。 現在看來, 這項投資似乎物有所值。

PyPy2.7 提升 C 擴展包相容性

另一個改進是基於 Python 2 的 C 擴展包支援。

此前 PyPy2(基於 Python 2.x )的開發進度一直領先於 PyPy3(基於 Python 3.x ), 這次 PyPy2 也沒有落後。 PyPy2.7 中除了適配 Python 2.x 最新的 bug 修復版 Python 2.7.13 之外,

最大的亮點在於大大改善了對 C 擴展包的相容性。

此前, Python 的 C 擴展包並不能像其他 Python 代碼一樣流暢地通過 PyPy 解釋運行, 而是必須借助一個名為 cpyext 的 API 相容層。 在此次更新中, PyPy 進一步改善了 cpyext 的效率, 用戶在 PyPy2.7 中可以方便地 import 包括 Numpy、Cython、Pandas 等在內的各種 C 擴展包。

這一點對與那些只支持 Python 2.x 的專案來說無疑是個好消息, 但先不要高興的太早。 因為 PyPy 團隊明確在博客中指出:C 擴展包的運行速度, 尤其是針對那些調用頻繁的 C 語言短函數, PyPy 的運行速度可能會比 CPython 慢。 但同時團隊也表示, 如果開發者真的發現 PyPy 在運行過程中有速度瓶頸的話, 可以隨時通知他們, 他們會在第一時間做出改進。

關於這一點, 目前一個有效的解決方案是直接把 C 擴展包移植到 PyPy,

就像 NumPy 在 PyPy 下的分支版本 NumPyPy 那樣, 充分利用 PyPy 的原生介面來集成 C 代碼。 但是考慮到這種方案有悖於 PyPy 團隊推出 cpyext 相容層的初衷, 因此並不是一個值得推薦的長期解決方案。

另外值得一提的是, 消息稱從 2020 年開始, 社區將停止對 Python 2.x 版本的支援。 但現實是, 由於各種各樣的不可抗力, 屆時可能仍然會有許多團隊不得不繼續使用 Python 2.x 的代碼。 那時 PyPy 將會是一個不錯的選擇, 畢竟 PyPy 最初就是以 Python 2.x 為核心發展起來的。

原文地址:http://www.infoworld.com/article/3183527/application-development/pypy-powers-up-python-35.html

PyPy 博客地址:https://morepypy.blogspot.com/2017/03/pypy27-and-pypy35-v57-two-in-one-release.html

PyPy 最新代碼位址:http://pypy.org/download.html

TOP5%Kaggler:如何在 Kaggle 首戰中進入前 10% | 乾貨

Cloudera 發佈自助式資料科學開發環境 原生支援 R、Python、Scala 和各大開源框架

支持Python!Facebook開源預測工具Prophet

Next Article
喜欢就按个赞吧!!!
点击关闭提示