python3 gil锁,python-gi

  python3 gil锁,python-gi

  1、说明

  GIL规定一个Python解释器在同一时间只能被一个线程控制。

  GIL是CPU受限类型和多线程代码中的一个性能瓶颈。

  GIL让Python多线程伪并行多线程。

  GIL只存在于CPython解释器上。

  2、原理

  (1)依次执行线程1、2和3。如果每个线程都在执行,GIL将被锁定,以防止其他线程执行;

  类似地,每个线程执行一个段后,GIL将被释放,以允许其他线程开始使用资源。

  (2)由于古老GIL机制,如果线程2需要在CPU2上执行,它需要等待线程1在CPU1上执行来释放GIL(记住:GIL是全局的)

  (3)如果线程1因为i/o阻塞而放弃了GIL,那么线程2必须获得GIL。但是,如果线程1因为计时器滴答计数超过100个信号(对应于大约1000个字节码)而放弃GIL,那么线程1和线程2此时会公平竞争。

  (4)但要命的是,在Python 2.x中,线程1并不动态调整优先级,所以下次很有可能会选择线程1执行。在很多这样的选举周期中,线程2只能静静地看着线程1在CPU 1上愉快地执行GIL。

  (5)极端情况下,比如thread 1使用while True在CPU1上执行,真的是“一核难,八核围观”。

  这就是python中GIL原理的介绍。希望能帮到你。更多Python学习指南:python基础教程

  本教程运行环境:windows7系统,Python 3.9.1,DELL G3电脑。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: