python运行时环境:
python的运行时最初在python解释器启动的时候创建。
创建过程:(1)创建主进程对象(PyInterpreterState)
(2)创建主线程对象(PyThreadState),同时放入主进程对象的线程对象链表(tstate_head)中
(3)创建系统模块:__builtin__模块对象、sys模块对象、exceptions模块对象和__main__模块对象,同时放入主进程对象的模块对象集modules。此外,还会创建模块对象的备份Extensions,备份之前创建的对象。(注:模块对象在python中即表示一个字典对象PyDictObject,其中包含若干"名字-对象指针"映射对pair)
一旦运行时环境创建好了以后就进入解释执行阶段。
解释执行过程:(1)编译Python脚本,并创建代码对象(PyCodeObject),代码对象中含有Python字节码指令。
(2)创建一个帧对象(PyFrameObject),将其放入主线程对象的帧对象链表,设置代码对象,设置全局名字空间(Global namespace)为__main__模块对象。
(3)开始执行帧对象中代码对象的字节码指令。
(4)此后的执行过程中,一旦发现有函数调用,就会创建一个帧对象,加入当前线程对象的帧对象链表,初始化,最后执行其中的字节码指令
参考:《Python源码剖析-深度探索动态语言核心技术》