複製鏈接
請複製以下鏈接發送給好友

PyPy

鎖定
PyPy是用Python實現的Python解釋器的動態編譯器,是Armin Rigo開發的產品。
外文名
PyPy
開發者
Armin Rigo
目    的
更好的Hack Python
屬    性
動態編譯器

PyPy項目背景

PyPy [1]  是Python開發者為了更好的Hack Python創建的項目。此外,PyPy比CPython是更加靈活,易於使用和試驗,以制定具體的功能在不同情況的實現方法,可以很容易實施。 該項目的目標是,讓PyPy比C實現的Python更為容易的適應各個項目和方便裁剪。

PyPy現狀介紹

PyPy是Armin Rigo開發的,Python語言的動態編譯器,是Psyco的後繼項目。PyPy的目的是,做到Psyco沒有做到的動態編譯
PyPy開始只是研究性質的項目。但是開發非常成熟,在2007年中旬發佈了1.0 Release版本後,大家關注的焦點是,能否在2008年出現可供生產環境使用的版本。
最新的(2018.12.15)PyPy版本是PyPy3 v6.0.0,兼容Python3.5.3。可以運行在Linux的32位和64位、MacOSX和Windows的32位平台中,但是基於arm平台的正在開發中。它支持Python語言的所有核心部分以及大多數的Python語言標準庫函數模塊,並且通過了Python語言的test suite。與CPython的區別可以去看它的兼容性頁面.
PyPy還提供了JIT編譯器和沙盒功能,因此運行速度比CPython要快,以及可以安全的運行一些不被信任的代碼。PyPy還有一個單獨的支持微線程的版本。
另外,PyPy 也有 每夜構建 版本供開發者測試。
PyPy是作為Specific Targeted Research Projects(特定領域研究項目)從2004年12月到2007年3月,開始接受歐盟的援助。

PyPy實現原理

PyPy的第一部分:用Python實現的Python
其實這麼説並不準確,準確得説應該是用rPython實現的Python,rPython是Python的一個子集,雖然rPython不是完整的Python,但用rPython寫的這個Python實現卻是可以解釋完整的Python語言。
PyPy的第二部分:編譯器
這是一個編譯rPython的編譯器,或者説這個編譯器有一個rPython的前端,目前也只有這麼一個前端,不過它的後端卻是不少,也就是説這個編譯器支持許多的目標語言,比較重要的有:CCILJavascript ... [2] 

PyPy主要特性

  • 大量的性能改進。
  • Bug修復,以及與CPython的兼容性修復。
  • 現在stackless功能默認啓用。
  • NumPy effort現在更名為numpypy,使用時可以簡單寫作:import numpypy as numpy。
  • JSON編碼器已被替換為一個新的,是用純Python編寫的,某些情況下比CPython的C擴展快2倍,比PyPy 1.6中的快20倍左右。
  • 一些RPython模塊的內存佔用已得到大幅改善。
另外,有一些功能正在開發,將包含在1.8版本中,這些功能包括:
  • 特殊列表實現。可以大幅改善一些應用程序的性能/內存影響。
  • NumPy effort即將支持多維數組。
  • 兩個新的JIT編譯器後端,尤其針對PowerPCARM處理器
參考資料