zoukankan      html  css  js  c++  java
  • 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锁,
    
    """

     

  • 相关阅读:
    机器学习基础1--线性回归
    联想RD350板载RAID110i,安装CentOS 7 不识别RAID设备
    CentOS 7磁盘寻找不到,卡在sulogin,造成的开机失败问题--Error getting authority...
    gitlab同步插件gitlab-mirrors报错<已解决,未找到原因>
    马哥Linux SysAdmin学习笔记(四)
    马哥Linux SysAdmin学习笔记(三)
    马哥Linux SysAdmin学习笔记(二)
    马哥Linux SysAdmin学习笔记(一)
    php-round()四舍六入
    Linux权限问题(2)-unzip引发的权限问题
  • 原文地址:https://www.cnblogs.com/limengjie0104/p/8961825.html
Copyright © 2011-2022 走看看