2011-02-05 28 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代码编译为本机可执行代码。