Python程序的执行原理(1)
发布时间:2018-04-17 05:16:02 所属栏目:语言 来源:tech.uc.cn
导读:副标题#e# 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。 2. 字节码 字节码在Python虚拟机程序里对应的是PyCodeObject对象。 .pyc文件是字节码在磁盘上的表现形式。 3. p
Python虚拟机的原理就是模拟可执行程序再X86机器上的运行,X86的运行时栈帧如下图: 假如test.py用C语言来实现,会是下面这个样子:
Python虚拟机的原理就是模拟上述行为。当发生函数调用时,创建新的栈帧,对应Python的实现就是PyFrameObject对象。 7.1 PyFrameObject
那么对应Python的运行时栈就是这样子: 7.2 执行指令 执行test.py的字节码时,会先创建一个栈帧,以下用f表示当前栈帧,执行过程注释如下: test.py的符号名集合和常量集合
test.py的指令序列 上面的CALL_FUNCTION指令执行时,会创建新的栈帧,并执行func的字节码指令,以下用f表示当前栈帧,func的字节码执行过程如下: func函数的符号名集合和常量集合
func函数的指令序列 7.3 查看栈帧 如果你想查看当前栈帧,Python提供了sys._getframe()方法可以获取当前栈帧,你只需要在代码里加入代码如下:
原文链接:http://tech.uc.cn/?p=1932 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |