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代码执行程序

最新文章

  1. Tower是个不错的项目管理开放平台
  2. Python,ElementTree模块处理XML时注释无法读取和保存的问题
  3. hadoop作业缺少jar文件解决办法
  4. 比较全面的MySQL优化参考(上下篇)
  5. Having与Where的区别
  6. Hibernate--基本映射标签和属性介绍
  7. 眼见为实(1):C++基本概念在编译器中的实现
  8. How to Implement the IContextMenu Interface
  9. 指针-->字符串
  10. C++对象的销毁
  11. CPU指令的流水线运行
  12. Linux nfs+autofs 环境搭建
  13. asp.net core mvc实现伪静态功能
  14. 201521123031 《Java程序设计》 第十周学习总结
  15. Alpha冲刺置顶随笔
  16. WPF项目学习.四
  17. 第二十节,使用RNN网络拟合回声信号序列
  18. EF crud操作
  19. python之排列组合测试
  20. Python glob.md

热门文章

  1. 【Spring Cloud笔记】 断路器-hystrix
  2. Linux学习历程——Centos 7 passwd命令
  3. Python之excel文件追加内容
  4. Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行
  5. ASP.NET Core 下自定义权限验证
  6. FineUIPro/Mvc/Core v5.4.0即将发布(Core基础版,新功能列表)!
  7. 数据的存储方式:SQLiteOpenHelper的用法
  8. MongoDB系列:二、MongoDB常用操作练习
  9. [转帖]Windows7/2008中批量删除隧道适配器的方法
  10. fuser:command not found