• 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锁,
    
    """

     

  • 相关阅读:
    新博客安家
    Win32设置与获取cookies的几种方法
    Win32 操作剪切板
    搜索PEB结构获取Kernel32.dll基址
    动人心魄音乐 [身骑白马 徐佳莹]
    单例模式与静态方法的区别(转载)
    个人回顾
    关于引入每日站会的思考
    2017年的总结和回顾
    《知易行难》回顾
  • 原文地址:https://www.cnblogs.com/limengjie0104/p/8961825.html
Copyright © 2020-2023  润新知