Psyco,一種 Python 專用編譯器,幫助平衡了這一競爭。Psyco 現(xiàn)在是個外部模塊,但是在將來的某一天它可能會包括到 Python 本身中去。只需極少量的額外編程,通常就可以使用 Psyco 將 Python 代碼的速度提高好幾個數(shù)量級。
Python 的設(shè)計在很多方面都類似于 Java 的設(shè)計。兩者都利用了解釋專門的偽編譯字節(jié)碼的虛擬機(jī)。JVM 比 Python 更高級的一個方面在于優(yōu)化了字節(jié)碼的執(zhí)行。
PS:
Psyco 可以在 Python解釋器 編譯代碼時自動優(yōu)化,將其使用C實現(xiàn),并針對循環(huán)操作進(jìn)行一些特殊的優(yōu)化。經(jīng)過這些優(yōu)化,程序的性能將會得到提升,在跨平臺環(huán)境下尤為明顯。
性能提升
對于密集計算型程序,Psyco 可以顯著提升程序的執(zhí)行速度。實際的提升決定于程序的具體實現(xiàn),曾經(jīng)有人獲得了高達(dá)100倍的提升,也有的時候因為需要額外加載 Psyco 模塊反倒帶來了輕微的性能下降。經(jīng)過調(diào)查,在典型的應(yīng)用上,Psyco 平均可以提供 1.5至4 倍的性能提升。這幫助 Python 的性能達(dá)到了 Smalltalk 和 Scheme 的水平,但是仍然與 Fortran 與 C這樣的編譯語言,或是一些 JIT 語言如 C# 和 Java有所差距。Psyco 宣稱自己是非常易用的,事實也確實如此。
最簡單的 Psyco 優(yōu)化只需要在程序開始處放置兩行代碼:
import psyco
psyco.full()
這兩行指令會讓 Python解釋器 加載 Psyco 模塊,并對接下來的腳本進(jìn)行優(yōu)化。對于小的程序來說,這相當(dāng)?shù)姆奖;但是大型工程來說,加入這些的工作量并不低,通常可以借助自動化腳本來完成。