python 运行机制

一、执行过程

  1.  当运行Python脚本时,Python编译器先会把.py文件中的每一条语句都编译成字节码。
  2.  如果Python有写入权限,那么Python会把这一组字节码保存为一个.pyc文件。下次运行时,如果没有修改过源代码,Python会跳过编译步骤,直接加载.pyc文件。修改过就重新编译。(Python会自动检查源文件和字节码文件的时间戳)
  3.  如果Python没有写入权限,字节码会在内存中生成,程序运行完后字节码被丢弃。
  4.  编译完成后,或字节码从.pyc文件导入后,字节码会被发送到Python虚拟机PVM(Python Virtual Machine),PVM迭代运行字节码指令,一个接一个完成操作。
  5.  执行程序时,python将直接加载.pyc,并跳过编译步骤。如果python无法在机器上写入字节码,字节码会在内存中生成,并在程序结束时被丢弃。
  6.  一旦程序被编译成字节码,之后的字节码发送到python虚拟机执行。PVM就是迭代运行字节码指令的一个大循环,一个接一个完成操作。PVM是Python运行时的引擎,它时常表现为Python系统的一部分,并且是实际运行脚本的组件。从技术上来说,它只是所谓Python解释器的最后一步。

二、关于.pyc 文件

.pyc 文件是 Python 编译后的字节码文件,它是通过将.py文件的源代码编译为二进制形式而生成的。下面是一些关于.pyc文件的重要信息:

  1. 生成方式:当你首次运行一个.py文件时,Python 解释器会自动检查是否存在对应的.pyc文件。如果.pyc文件不存在或过期,解释器会在内存中将.py文件的源代码编译为字节码,并将其保存为.pyc文件。

  2. 执行速度:由于.pyc文件是已经编译的二进制文件,相比于.py文件,它可以更快地被 Python 解释器加载和执行,从而提高代码的执行速度。这是因为解释器无需再次解析和编译源代码,而是直接加载并执行已编译的字节码。

  3. 跨平台性:.pyc文件是与特定版本的 Python 解释器相关的,不同版本的解释器可能会生成不兼容的.pyc文件。因此,在跨平台部署或共享.pyc文件时,需要确保目标环境使用与编译时相同版本的解释器。

  4. 缓存和更新:.pyc文件被用作代码的缓存,它们存储在与源代码相同的目录下。当.py文件的修改时间早于对应的.pyc文件,或者.pyc文件被删除时,Python 解释器会重新生成或更新.pyc文件。

  5. 可读性和修改:.pyc文件是二进制文件,并且不具备人类可读性。因此,无法直接通过文本编辑器查看或修改.pyc文件的内容。如果需要修改代码,应该修改对应的.py文件,然后让解释器重新生成.pyc文件。

.pyc文件在 Python 中起到了加速代码执行的作用,允许更快地加载和运行代码。它们由解释器自动生成和管理,通常不需要手动操作.pyc文件

参考:

给编程初学者:从解释器到python的运行机制 - 知乎

https://www.cnblogs.com/LuckCoder/p/17340285.html

你可能感兴趣的:(python,python,开发语言)