3 回答

TA貢獻1966條經(jīng)驗 獲得超4個贊
就像@Greg Hewgill所說的那樣,有很多理由說明為什么這并不總是可能的。但是,某些類型的代碼(例如非常算法的代碼)可以變成“真實的”機器代碼。
有幾種選擇:
使用Psyco,它可以動態(tài)發(fā)出機器代碼。不過,您應(yīng)該仔細選擇要轉(zhuǎn)換的方法/函數(shù)。
使用Cython,這是一種類似 Python的語言,已編譯為Python C擴展
使用PyPy,它具有從RPython(Python 的受限子集,不支持Python的某些最“動態(tài)”功能)到C或LLVM的轉(zhuǎn)換器。
PyPy仍處于高度實驗階段
并非所有擴展名都存在
之后,您可以使用現(xiàn)有軟件包之一(freeze,Py2exe,PyInstaller)將所有內(nèi)容放入一個二進制文件中。
總而言之:您的問題沒有一般性的答案。如果您具有對性能至關(guān)重要的Python代碼,請嘗試使用盡可能多的內(nèi)置功能(或詢問“如何使我的Python代碼更快”問題)。如果那沒有幫助,請嘗試識別代碼并將其移植到C(或Cython)并使用擴展名。

TA貢獻1833條經(jīng)驗 獲得超4個贊
PyPy是一個在Python中重新實現(xiàn)Python的項目,使用對本機代碼的編譯作為實現(xiàn)策略之一(其他方法是具有JIT的VM,使用JVM等)。他們的編譯C版本平均比CPython運行慢,但對于某些程序則快得多。
Shedskin是一個實驗性的Python到C ++編譯器。
Pyrex是專門為編寫Python擴展模塊而設(shè)計的語言。它旨在彌合Python的精美,高級,易于使用的世界與C的混亂,低級的世界之間的鴻溝。
添加回答
舉報