CPython 运行时内部:关键数据结构与运行时引导

主要观点:

  • 介绍了 CPython 运行时的相关内容,包括其代表结构、初始化过程以及与字节码解释器的关系。
  • 详细阐述了 CPython 运行时状态的表示结构,如_PyRuntimeStatePyInterpreterStatePyThreadState等。
  • 讲述了 CPython 启动时的代码流程,从main函数到pymain_init再到Py_InitializeFromConfig等函数,最终完成运行时的初始化。

关键信息:

  • CPython 运行时状态由_PyRuntimeState表示,包含全局状态,重要字段有解释器状态列表和主线程状态字段等。
  • 通常有一个主线程和一个主解释器,用户代码可创建子解释器和更多线程,运行时通过链表跟踪。
  • pymain_init调用_PyRuntime_InitializePy_InitializeFromConfig初始化运行时,后者创建主解释器和主线程状态。
  • _PyInterpreterState_New_PyThreadState_New分别创建主解释器和主线程状态,或创建新的子解释器和线程状态。

重要细节:

  • CPython 运行时状态在pylifecycle.c中声明为全局变量并静态初始化,通过_PyRuntimeState_INIT宏完成。
  • _PyInterpreterState_New根据情况设置主解释器或新的子解释器。
  • new_threadstate函数用于创建新的线程状态,处理主线程状态设置或新线程状态创建。
  • 运行时初始化完成后可开始执行 Python 代码,下一篇将讲述字节码解释器执行字节码的过程。
阅读 10
0 条评论