Python线程的生命周期
Python解释器的资源的申请和释放都由主线程完成
全局变量_PyRuntimeState中有一个字段_finalizing就是标记python解释器是否正在退出,这个字段在解释器初始化时被设置为null
当主线程要退出时(在Py_RunMain中调用Py_FinalizeEx,会开始主线程的退出流程),主线程会将_finalizing设置为自己
其它所有的线程在竞争获取GIL时,会首先检查_finalizing是否被设置了,若被设置,则马上放弃GIL的竞争并退出线程
这样在一段时间后,就只剩下主线程自己了
主线程会完成资源的释放工作。
要注意的是,Py_FinalizeEx可以在Py_RunMain外调用,其效果是释放所有python解释器的资源(而不影响所属的进程)
这个操作存在的意义在于:一些进程通过加装python的库的方式启动python,此时python并没有独立进程,此时python所属进程就可以通过Py_FinalizeEx释放Python的资源而不影响运行。
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?