浅谈python编译过程

python是一门解释性语言

什么是解释性语言?学过C语言的同学都知道C语言是一门编译性语言,那么这里我们就要清楚的了解解释性语言编译性语言有什么区别。

编译性语言:
只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前编译的结果即可;因此其执行效率比较高。例如:C语言、C++等

解释性语言:
源代码不能直接被编译为机器语言,而是先编译成中间代码,再由解释器对中间代码进行解释运行;执行效率较慢。例如:python、JS等

这也就是为什么人们常说C语言底层语言(距离内核近),python是高级语言(距离内核远)

python运行效率慢是python最大的缺点,当然目前在实际项目中会有很多优化的方案,可以提升python的效率。这个后期咱们再谈。

python的运行过程

根据解释性语言的性质,系统在读取python代码时,往往是如下步骤:

编译
m.py
m.pyc
PVM运行

m.py(源代码)——> m.pyc(字节码)——> PVM(虚拟机运行)

当python运行时,会将源代码翻译为字节码,之后将字节码转发至虚拟机中即可运行。

而其中的字节码在内存中的PyCodeObject中,运行结束后,python将PyCodeObject写入到.pyc文件中(python2中是.pyc,python3 是_pycache__的子目录中),.pyc文件其实是PyCodeObject的一种持久化保存方式(通常与源代码在统一目录下).

.pyc文件会提高代码的执行速度。
下一次运行源代码时,系统会识别源代码和.pyc文件的最后修改时间是否相同,相同即可直接运行字节码;不相同则废弃原字节码,重新由源代码编译为新的字节码

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值