2011-02-05 31 views
1

如果我有一個函數在我的模塊中很少的地方被調用,虛擬機是否只在第一次執行該函數時將其編譯爲本機代碼,而不是在其他調用中使用兌現代碼? (如.NET jit編譯器)python vm是否每次編譯方法?

+0

Python不會將函數編譯爲機器碼。目前還沒有可行的透明JIT。 (雖然看[Psyco](http://psyco.sourceforge.net/),它有時可以創造奇蹟。) – 9000 2011-02-05 18:28:39

+0

@ 9000:IronPython,Jython,PyPy? – delnan 2011-02-05 18:29:17

回答

9

在CPython(標準Python實現)中,第一次導入Python模塊時,它被編譯爲字節碼並存儲在.pyc文件中。從此,VM會在需要時讀取並解釋.pyc文件。一旦將.pyc讀入內存,字節碼將存儲在內存中,並在調用函數時由VM解釋。

CPython從不將Python代碼編譯爲本機可執行代碼。