Python的解释器为何不叫虚拟机
2021年3月16日 - 由Bo 0 评论 1004 阅读
同样是处理字节码,Python中很少有人提到PVM,经常提到interpreter。但是对于其他语言比如java就有jvm。这之间到底有什么区别。
对于Python来说,PVM和interpreter的界限比较模糊了,有的人会直接把这两者当做一体。
先看看虚拟机大致是怎样的:虚拟机被看作一个虚拟的计算环境,或者是一个沙盒,用来运行指定的程序。虚拟机提供了一个和平台无关的环境,随着运行的结束,虚拟机也被销毁。
解释器则是将代码逐句翻译并运行,而不需要编译。
而jvm中也有一个解释器,是用来解释字节码的。不过python也会将代码转换为字节码保存在.pyc文件中,若下次没有变动则会直接运行字节码,这样看来两者也很相似了。硬要说不同的话,就是python没有JIT。
另外,也有人说到python中解释器里的code evaluator即是pvm。
在stackoverflow上有一个回答比较有意思:
# https://stackoverflow.com/questions/441824/java-virtual-machine-vs-python-interpreter-parlance
Probably one reason for the different terminology is that one normally thinks of feeding the python interpreter raw human-readable source code and not worrying about bytecode and all that.
In Java, you have to explicitly compile to bytecode and then run just the bytecode, not source code on the VM.
Even though Python uses a virtual machine under the covers, from a user's perspective, one can ignore this detail most of the time.
下一篇:
理解Python中的字节码
上一篇:
阿里云设置二级域名并更新nginx配置