Python高级gil面试题

GIL⾯试题如下

描述Python GIL的概念, 以及它对python多线程的影响?编写⼀个多
线程抓取⽹⻚的程序,并阐明多线程抓取程序是否可⽐单线程性能有提
升,并解释原因。

Guido的声明:http://www.artima.com/forums/flat.jsp?
forum=106&thread=214235

he language doesn’t require the GIL – it’s only the CPython virtual machinethat has historically been unable to shed it.

参考答案:

  1. Python语⾔和GIL没有半⽑钱关系。仅仅是由于历史原因在
    Cpython虚拟机(解释器),难以移除GIL。
  2. GIL:全局解释器锁。每个线程在执⾏的过程都需要先获取GIL,保
    证同⼀时刻只有⼀个线程可以执⾏代码。
  3. 线程释放GIL锁的情况: 在IO操作等可能会引起阻塞的system call
    之前,可以暂时释放GIL,但在执⾏完毕后,必须重新获取GIL Python
    3.x使⽤计时器(执⾏时间达到阈值后,当前线程释放GIL)或
    Python 2.x,tickets计数达到100
  4. Python使⽤多进程是可以利⽤多核的CPU资源的。
  5. 多线程爬取⽐单线程性能有提升,因为遇到IO阻塞会⾃动释放GIL

你可能感兴趣的:(Python高级gil面试题)