2010-06-07 50 views

回答

0

您可以編譯python到PYC(http://effbot.org/zone/python-compile.htm)。然而,只執行一個python腳本不會自動完成這個編譯,所以一個使用python的CGI web設置不會自動編譯。

0

當你在Python中使用一個模塊時,它(通常)會被編譯,如果它還沒有。例如,如果您的Django應用程序只部署了.py文件,則它們將被編譯(並且輸出爲.pyc文件),因爲模塊是由應用程序導入的。

+0

所以它不像java/.net那樣在這方面「有效」呢? – Blankman 2010-06-07 14:39:24

+0

以什麼方式?它在部署之前不會被編譯*,如果這就是你的意思。 (一般來說,Python沒有Java的性能,但這是出於其他原因。) – mipadi 2010-06-07 14:44:32

1

給定一種語言X,以及服務器可以知道它的一種方式(一個模塊或其他)或一個適當的「中間」CGI程序mX,這個mX可以被編程,以便它確實直接解釋純文本腳本X(如php)或字節碼編譯代碼(最初用X編寫)。所以,如果存在適當的mX,它可能是兩種選擇。但我認爲最常見的和php和asp相同。

與字節應對可能比解釋腳本更有效(即使現代的解釋是不是在簡單的方式實現,並使用「技巧」來提高性能)

1

你可以很容易地看到字節碼:

>>> import dis 
>>> dis.dis(lambda x: x*2) 
    1   0 LOAD_FAST    0 (x) 
       3 LOAD_CONST    0 (2) 
       6 BINARY_MULTIPLY  
       7 RETURN_VALUE   
>>> 
0

Python模塊在導入時「編譯」爲.pyc文件。這與編譯Java或.NET並不相同,剩下的與您的源代碼幾乎有1-1對應關係;這意味着下次不需要解析文件,但這就是全部。

您可以使用compilecompileall模塊預編譯腳本包,或者編譯腳本,否則不會編譯腳本。我不認爲從命令行(或來自CGI)運行腳本會使用.pyc

相關問題