• 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的资源而不影响运行。

  • 相关阅读:
    Gitee + PicGo搭建图床 & Typora上传图片到图床
    算法思维 ---- 双指针法
    Floyd's cycle-finding algorithm
    Boyer-Moore Voting Algorithm
    youtube-dl 使用小记
    算法思维 ---- 滑动窗口
    Memo
    英语
    BZOJ 3270
    BZOJ 3196
  • 原文地址:https://www.cnblogs.com/tuzkee/p/16057292.html
Copyright © 2020-2023  润新知