如果我有一个函数在我的模块中的几个地方被调用,虚拟机是否只在函数第一次执行时将它编译成本地代码,而不是在其他调用中使用缓存代码? (类似于 .NET jit 编译器)
请您参考如下方法:
在 CPython(标准 Python 实现)中,第一次导入 Python 模块时,它会被编译为字节码并存储在 .pyc 文件中。从那时起,.pyc 文件在需要时由 VM 读取和解释。一旦 .pyc 被读入内存,字节码就在内存中,并在调用函数时由 VM 解释。
CPython 从不将 Python 代码编译为 native 可执行代码。
