zoukankan      html  css  js  c++  java
  • 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代码执行程序

  • 相关阅读:
    STM32 端口复用配置
    stm32 新建文件记得添加到工程
    keil解决SYSTEMsysstm32f10x.h(298): error: #67: expected a "}"
    解决Keil复制中文乱码
    STM32 MPU6050 源码
    STM32 PWM输出
    STM32定时器
    STM32 看门狗操作姿势
    开课博客
    第二周学习进度
  • 原文地址:https://www.cnblogs.com/douzujun/p/10764853.html
Copyright © 2011-2022 走看看