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

1. GIL概念

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

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

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

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

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

2. GIL演示

2.1 单线程死循环

2.2 2个线程死循环

2.3 2个进程死循环

猜你喜欢

转载自www.cnblogs.com/douzujun/p/10764853.html