• Python高级笔记(一) -- GIL (全局解释器锁)


    1. GIL概念 (cpython历史遗留问题)

    概念? 对Python多线程的影响? 编写一个多线程抓取网页的程序? 阐述多线程抓取程序是否比单线程性能有提升, 并解释原因。

    • GIL:全局解释器锁, 每个线程在执行的过程都需要先获取GIL, 保证同一时刻只有一个线程可以执行代码

    • 线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前, 可以暂时释放GIL, 但在执行完毕后, 必须重新获取GIL. Python3.x使用计时器 (执行时间到达阈值后, 当前线程释放GIL)

    • Python使用多进程是可以利用多核的CPU资源的。

    • 多线程爬取比单线程性能有提升, 因为遇到 IO阻塞 会自动释放GIL锁。

    • GIL适合在: 计算密集型程序:多进程-能够发挥多核的威力、IO密集型程序:多线程

    2. GIL 

    2.1 2个线程

    假多线程, 只有一个线程在执行, 因为GIL存在,发挥不出多核的优势。

    2.2 2个进程

    真并发

    3. 解决GIL版本

    • 换Python解释器

    • 调C代码执行程序

  • 相关阅读:
    Bluetooth GATT介绍
    Bluetooth ATT介绍
    Bluetooth GAP介绍
    Bluetooth Low Energy介绍
    CC2540介绍
    DBus介绍
    802.11 MAC层
    802.11介绍
    Python资料
    Bluedroid之GKI
  • 原文地址:https://www.cnblogs.com/douzujun/p/10764853.html
Copyright © 2020-2023  润新知