在我們日常的開發中,開發效率非常重要,它可以直接影響我們的工作時間。如果運行速度快,我們可能在半天時間里完成指定的工作,而Python在運行速度方面沒有C或Java。很快,但Python正在慢慢改進。本文將向您說明如何改進,請參閱以下內容:
PYPY:PyPy是使用率較高的一種,并且與現有的Python代碼高度兼容。它使用及時編譯來加速Python,并集成了Numpy。之前已經使用Numpy來加速Python的操作。使用Python3的代碼需要相應地使用PyPy3。PyPy目前僅支持Python3.2.5,對Python3.3的支持正在進行中。
Pyston:它使用LLVM編譯器架構來加速Python,它也使用即時編譯。與PyPy相比,Pyston仍處于早期階段,僅支持Python的部分功能。Pyston將工作分為兩部分,一是語言的核心特性,二是將性能提升到可接受的水平。Pyston距離能夠在生產環境中使用還有很長的路要走。
Nuitka:一些團隊嘗試將Python代碼轉換為其他語言的代碼,可以在本地高效運行。著名的項目之一是Nuitka將Python代碼轉換為C++代碼,盡管運行時仍然依賴于Python運行時。這限制了它的便攜性,但性能提升是可觀的。在長期計劃中,Nuitka還計劃允許C語言調用Nuitka編譯的Python代碼,這樣性能提升會更加明顯。
Cypython:Cython(Python的C語言擴展)是Python的超集。它可以將Python代碼編譯成C代碼,并與C和C++進行交互。它可以作為Python項目的擴展(重新性能要求),也可以單獨使用,不涉及傳統的Python代碼。缺點是你不是在寫Python,需要手動遷移,缺乏可移植性。
Numba:Numba結合了上述項目的思想。在學習了Cython之后,Numba也采用了部分加速策略,只對CPU密集型任務進行加速;同時也學習了PyPy和Pyston,通過LLVM運行Python。你可以使用裝飾器來指定要使用Numba編譯的函數,Numba繼承了Numpy來加速函數的執行。Numba沒有及時編譯,它的代碼是預編譯的。