• GIL


    GIL--全局解释器锁

    1. python增加GIL的原因:

        cpython解释器的内存管理并不是线程安全的

        保护多线程下对python对象的访问

        cpython使用简单的锁机制避免多个线程同时执行字节码

    2. 影响:

       同一时间只有一个线程执行字节码

       CPU密集程序难以使用多核的优势

     IO期间会释放GIL的,对IO密集程序影响不大

    3. 如何规避影响

      CPU密集使用多进程+进程池

      IO密集使用线程//协程

    4.有GIL,为何还要关注线程安全

         原子操作:一个指令如果是一个字节码可以完成就是原子的,原子操作是可以保证线程安全的;

         大部分业务代码均是非原子操作,所以访问同一对象时,在多线程中依旧不是线程安全的;

      

  • 相关阅读:
    Shell编程常用
    毕设问答
    《如何高效学习》
    《如何阅读一本书》(未完)
    《牧羊少年奇幻之旅》
    2019.04月总结
    上周还是合意的,且找到了一定的遵循4.6-4.12

    错误和异常
    数据结构
  • 原文地址:https://www.cnblogs.com/wenshu/p/12303761.html
Copyright © 2020-2023  润新知