我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件。运行该程序的时候,就可以把二进制程序从硬盘载入到内存中并运行。但是对于Python而言,Python源码不需要编译成二进制代码,它可以直接从源代码运行程序
我们都知道,需要将以C / C ++等编译语言编写的程序从源文件转换为计算机使用的机器语言,该语言是在 通过链接器链接二进制可执行文件。 运行该程序时,可以将二进制程序从硬盘加载到内存中并运行。
但是对于Python,Python源代码不需要编译为二进制代码,它可以直接从源代码运行程序。 Python解释器将源代码转换为字节码,然后将编译后的字节码转发到Python虚拟机(PVM)以执行。 接下来,通过图描述Python程序的执行过程,如图1所示。
在图1中, 当我们运行Python文件程序时,Python解释器将执行两个步骤:
(1)将源代码编译为字节码
编译后的字节码是特定于表现形式的 对Python而言,它不是二进制机器代码,需要机器进行进一步的编译,这就是为什么Python代码无法像C / C ++一样快地运行的原因。
如果Python进程对计算机具有写许可权,则它将程序的字节码另存为扩展名为.pyc的文件。 如果Python无法在机器的分区代码中写单词,则字节码将在内存中生成并在程序结束时自动丢弃。 最好在构建程序时授予Python在计算机上写的权限,以便只要未更改源代码,就可以重用所生成的.pyc文件以提高执行效率。
(2)将编译后的字节码转发到Python虚拟机(PVM)以执行
PVM是Python虚拟机的缩写,它是Python运行引擎 是Python系统的一部分,它是一个迭代运行字节码指令的大循环,一个接一个地完成操作。