• GIL


    知识储备:

    """
    1、什么事GIL
    
      全局解释器锁,本质就是一把互斥锁,是加到解释器身上的,每一个python进程内都有这么一把锁i
    
    2、有了GIL会对单进程下的多个线程造成什么样的影响
    
      多线程要想执行自己的代码,首先需要争抢GIL,对所有待执行的线程来说,GIL就相当于执行权限
    
      同一时刻只有一个线程争抢成功,即单进程下的多线线程同一时刻只有一个在运行
    
      意味着但进程下的多线程没有并行的效果,但是有并发的效果
    
      PS:分散于不同进程内的线程不会去争抢同一把GIL,只有同一个进程的多个线程才争抢同一把GIL
    
    3、为什么要有GIL
    
      Cpython解释器的内存管理机制(垃圾回收线程)不是“线程安全”的
    
    4、GIL与自定义胡知所的异同,多个线程争抢GIL与自定义互斥锁的过程分析
    
      相同:
    
        互斥锁
      不同点:
    
        GIL是加到解释器上的,作用于全局
        自定义互斥锁作用于局部
        
        单进程内的所有线程都会去抢GIL
        单进程内的只有一部分线程会去抢自定义的互斥锁
    5、什么时候用python的多线程,是么时候用多进程,为什么?
    
      单进程下的多线线程是无法并行,无法并行意味着不能利用多核优势
    
      CPU是执行计算工作,多个CPU意味提升计算性能
    
      CPU是无法做I/O操作,意味着多个CPU在I/O操作面前提升的性能效益微乎其微
    
      
    
      当程序是I/O密集型情况下,多核对性能的提升微不足道,此时可以使用python的多线程
    
      当程序是计算密集型情况下,一定要用上多核优势,此时可以使用python多进程
    
        
    
    ** 多个线程争抢GIL与自定义互斥锁的过程分析 **
        多个线程先争抢GIL锁,
    
    """

     

  • 相关阅读:
    JavaScript数组方法大全
    梁凤波工作周记3月10号
    JS解析联动JSON数据
    angularjs select 获取选中的值
    外部变量获取Ajax后台返回的参数值(success)
    ionic $ionicModal使用方法
    angularjs select ng-options延迟更新(联动)
    ionic使用iframe范围外部站点
    angularjs select 三级联动
    Ionic start 创建项目报错
  • 原文地址:https://www.cnblogs.com/limengjie0104/p/8961825.html
Copyright © 2020-2023  润新知