python源程序执行的方式 编译执行_Python学习笔记二(程序执行)

Python运行脚本时,在代码开始处理之前,Python会执行一些步骤,确切的说,第一步时编译成所谓的字节码,之后将其转发到所谓的虚拟机中。

一、字节码编译

当程序执行时,Python内部会先将源代码编译成字节码的形式。这些字节码可以提高执行速度。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保持为一个以.pyc为扩展名的文件(.pyc就是编译过的.py源代码)。当程序运行之后,你会在那些源代码的附近(也就是说同一个目录下)看到这些文件。

Python这样保持字节码时作为一种启动速度的优化,下一次运行程序时,如果你在上次保存字节码后没有修改过源代码的话,Python将加载.pyc文件并跳过编译这个步骤。如果有修改,下次运行时字节码将自动重新创建。

如果进程没有写入权限,则字节码将会在内存中生成,在程序结束时被丢弃。

二、Python虚拟机(PVM)

一旦程序编译成字节码(或字节码已从存在的.pyc文件中载入),之后的字节码会发送到Python虚拟机上来执行。PVM是Python的运行引擎,它是实际运行脚本的组件,从技术上讲,它是Python解释器的最后一步。

三、关于性能

Python没有build或make的步骤,代码写好后可立即运行。此外,Python字节码不是机器的二进制代码,字节码是特定于python的一种表现形式。这就是Python无法运行的像C代码一样快的原因,PVM仍然需要解释字节码,而且字节码指令与CPU指令相比需要更多的工作。另一方面,和其他传统解释器不同,Python仍有内部的编译步骤:它并不需要反复的重分析和重分解每一行语句。因此Python代码的运行速度介于传统的编译语言和解释语言之间。

Python所有的事情都是在程序运行时发生的,包括建立函数和类的操作以及连接的模块,这些事情对于静态语言往往是发生在执行之前的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值