• GIL


    GIL

    GIL介绍

    在Cpython解释器中有一把GIL锁(全局解释器锁),GIL锁本质是一把互斥锁

    导致了同一进程下,同一时间只能运行一个线程,无法利用多核优势

    同一个进程下多个线程只能实现并发不能实现并行

    为什么要有GIL?

    因为Cpython自带的垃圾回收机制不是线程安全的,所有要有GIL锁

    案例分析

    我们有四个任务需要处理,处理方式肯定是要玩出并发的效果,解决方案可以是:

    方案一:开启四个进程

    方案二:一个进程下,开启四个线程

    #计算密集型  推荐使用多进程
    #每个都要计算10s
    多线程
    在同一时刻只有一个线程会被执行,也就意味着每个10s都不能省,分开每个都要计算10,共计40.ns
    多进程
    可以并行的执行多个线程,10s+开启进程的时间
    
    
    #io密集型   推荐多线程
    #4个任务每个人物90%大部分时间都在io
    #每个任务io10s 计算时间0.5s
    多线程
    可以实现并发,每个线程io的时间不咋占用cpu, 10s + 4个任务的计算时间
    多进程
    可以实现并行,10s+1个任务执行的时间+开进程的时间
    
    
  • 相关阅读:
    Python语言之并发编程
    python语言之系统工具
    python语言之正则
    python语言之字符串与字节
    Python语言之持久化
    Python语言之数字格式化与时间
    Python语言之异常处理与测试
    Java-AQS源码详解(细节很多!)
    redis的主从复制原理
    Amdahl定律和可伸缩性
  • 原文地址:https://www.cnblogs.com/aden668/p/11543027.html
Copyright © 2020-2023  润新知