2012-01-06 150 views
13

我有一個關於蟒蛇蟒蛇編譯

  1. 爲什麼沒有蟒蛇編譯器創建本地代碼的幾個疑問?我找到了py2exe等,但他們只是隨同他們一起打包了一個python解釋器,因此它又是解釋器執行代碼的地方。

  2. 是不是可以創建一個像LISP編譯器一樣的Python編譯器,因此代碼的執行速度會更快(與C++相比)?

謝謝, 維奈

+3

您可能會發現這個問題很有趣:http://stackoverflow.com/questions/138521/is-it-feasible-to-compile-python-to-machine-code – charlax 2012-01-06 05:53:32

回答

15

Nuitka – Python Compiler

它是什麼

我以爲,就必須有可以使用的Python,比CPython的已經有它的字節碼更好的編譯器編譯器。這就是Nuitka應該是的。

這是我試圖在運行時使用libpython時將純Python轉換爲字節碼,但轉換爲機器代碼(通過C++編譯器)。然後編譯時間,並運行時間分析,以推測執行速度更快的模式,如果滿足某些期望。

+1

謝謝..這是我第一次在搜索相當一段時間後聽到這個消息,而且看起來很有趣。這是我正在尋找.. :)我沒有檢查它是如何工作的。 – Vinay 2012-01-06 10:48:10

2

有,有點。

  1. Cython - 我還沒有機會充分發掘它,但作爲最好的,我可以告訴大家,它直接編譯Python代碼。你也可以使用(可選的)靜態類型 - 它不再是香草Python,但如果你做得對,它可以提高速度。此外,看到這一點:Can Cython compile to an EXE?

  2. 這可能是因爲我沒有和Lisp了不少經驗,但我不是你的意思是「創建一個Python編譯器像Lisp語言的編譯器」什麼完全肯定。

+0

我讀過的地方存在一個LISP編譯器和性能的LISP程序與C++相媲美。我錯了嗎? LISP編譯器能否創建本機可執行文件? – Vinay 2012-01-06 06:18:59

+0

啊,我誤解了你原來的問題。是的,一些Lisp編譯器可以創建本機可執行文件。 Cython(我上面鏈接的)幾乎完成了同樣的事情。 – Michael0x2a 2012-01-06 06:35:21

8

問題1:

  • Nuitka(直接Python代碼C++)
  • ShedSkin(編譯隱式靜態類型的Python到C++,單機程序或 擴展模塊)
  • Cython(從Python的超集擴展到C 。用Cython來自Pyrex

問題2:
不知道如果我得到它的正確,但也許答案是:

  • psyco(A即時編譯器(JIT)爲Python代碼中,所述PyPy JIT的 前身)
1

Numba是基於NumPy的& LLVM,較新的Python編譯器,其回退到噸CPython。