主要观点:
- 介绍了 CPython 运行时的相关内容,包括其代表结构、初始化过程以及与字节码解释器的关系。
- 详细阐述了 CPython 运行时状态的表示结构,如
_PyRuntimeState
、PyInterpreterState
和PyThreadState
等。 - 讲述了 CPython 启动时的代码流程,从
main
函数到pymain_init
再到Py_InitializeFromConfig
等函数,最终完成运行时的初始化。
关键信息:
- CPython 运行时状态由
_PyRuntimeState
表示,包含全局状态,重要字段有解释器状态列表和主线程状态字段等。 - 通常有一个主线程和一个主解释器,用户代码可创建子解释器和更多线程,运行时通过链表跟踪。
pymain_init
调用_PyRuntime_Initialize
和Py_InitializeFromConfig
初始化运行时,后者创建主解释器和主线程状态。_PyInterpreterState_New
和_PyThreadState_New
分别创建主解释器和主线程状态,或创建新的子解释器和线程状态。
重要细节:
- CPython 运行时状态在
pylifecycle.c
中声明为全局变量并静态初始化,通过_PyRuntimeState_INIT
宏完成。 _PyInterpreterState_New
根据情况设置主解释器或新的子解释器。new_threadstate
函数用于创建新的线程状态,处理主线程状态设置或新线程状态创建。- 运行时初始化完成后可开始执行 Python 代码,下一篇将讲述字节码解释器执行字节码的过程。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。