当我保留机器代码时,像Python这样的解释语言会像C++那样编译的语言那么快。

2024-04-26 05:53:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python等解释语言的理解是,它将源代码转换(或编译,具体取决于术语的确切定义)为低级和独立于平台的字节码。当字节码需要在特定机器上执行时,Python VM会再次将其转换为特定于目标机器的机器代码,以便目标机器的CPU能够成功地理解我的Python代码(已经是字节码格式)

在此过程中,源代码和字节码与平台无关,最终机器代码与平台相关

我的问题是,如果我保存PythonVM生成的结果机器代码并在同一台机器上重新使用它会怎么样?这是否意味着我已经像C/C++一样编译了Python源代码?我的理解是,在机器代码层面,“高级编程语言”的概念消失了,生成这种机器代码的源代码变得无关紧要——机器代码只是机器代码,CPU不在乎,也不知道这种机器代码来自哪种语言。这是否意味着,无论如何,PythonVM生成的机器代码可以和C/C++生成的机器代码一样快

(我知道这样的机器代码无论如何都不会跨平台——但这不是这个问题的重点。因为我可以像C/C++一样针对不同的平台编译源代码。)


1条回答
网友
1楼 · 发布于 2024-04-26 05:53:43

不,Python字节码与机器码不同。显然,您可以构建一个使用Python字节码作为机器代码的硬件

但是,Python开发人员没有创建真正的硬件机器,而是创建了一种Python虚拟机,将Python代码作为机器代码运行(我说的有点像,因为它主要是解释的,而不是像JVM语言一样编译的,而且VM实际上不是一个VM,而是一个解释器,您应该进一步研究一下VM和解释的区别:-))。您可以将VM想象为一个程序,为了运行代码而“模拟真实硬件”

通过这种方式,您不需要关心底层硬件,但必须将Python解释器环境与代码一起提供,以形成可执行文件

我认为,错误的观念是有一个直接转换为机器代码是罪魁祸首。在某种程度上,是的,Python被转换为机器代码,但有点间接地通过在机器上执行Python环境,然后在执行代码的过程中,Python环境会将Python代码转换为机器代码以运行它

相关问题 更多 >