Python高级笔记(一) -- GIL (全局解释器锁)
2024-10-13 08:30:06
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代码执行程序
最新文章
- Tower是个不错的项目管理开放平台
- Python,ElementTree模块处理XML时注释无法读取和保存的问题
- hadoop作业缺少jar文件解决办法
- 比较全面的MySQL优化参考(上下篇)
- Having与Where的区别
- Hibernate--基本映射标签和属性介绍
- 眼见为实(1):C++基本概念在编译器中的实现
- How to Implement the IContextMenu Interface
- 指针-->;字符串
- C++对象的销毁
- CPU指令的流水线运行
- Linux nfs+autofs 环境搭建
- asp.net core mvc实现伪静态功能
- 201521123031 《Java程序设计》 第十周学习总结
- Alpha冲刺置顶随笔
- WPF项目学习.四
- 第二十节,使用RNN网络拟合回声信号序列
- EF crud操作
- python之排列组合测试
- Python glob.md
热门文章
- 【Spring Cloud笔记】 断路器-hystrix
- Linux学习历程——Centos 7 passwd命令
- Python之excel文件追加内容
- Ant Design Pro+Electron+electron-builder实现React应用脱离浏览器,桌面安装运行
- ASP.NET Core 下自定义权限验证
- FineUIPro/Mvc/Core v5.4.0即将发布(Core基础版,新功能列表)!
- 数据的存储方式:SQLiteOpenHelper的用法
- MongoDB系列:二、MongoDB常用操作练习
- [转帖]Windows7/2008中批量删除隧道适配器的方法
- fuser:command not found