PyPy

PyPy

PyPy是用Python實現的Python解釋器。

基本介紹

  • 外文名:PyPy
  • 開發者:Armin Rigo
  • 目的:更好的Hack Python
  • 屬性:動態編譯器
項目背景,現狀介紹,實現原理,主要特性,

項目背景

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

現狀介紹

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的第一部分:用Python實現的Python
其實這么說並不準確,準確得說應該是用rPython實現的Python,rPython是Python的一個子集,雖然rPython不是完整的Python,但用rPython寫的這個Python實現卻是可以解釋完整的Python語言。
PyPy的第二部分:編譯器
這是一個編譯rPython的編譯器,或者說這個編譯器有一個rPython的前端,目前也只有這么一個前端,不過它的後端卻是不少,也就是說這個編譯器支持許多的目標語言,比較重要的有:C,CIL,Javascript ...

主要特性

  • 大量的性能改進。
  • 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編譯器後端,尤其針對PowerPC和ARM處理器。

相關詞條

熱門詞條

聯絡我們