46. 什么是GIL

GIL是全局解释器锁的缩写(global interpreter lock)

CPython解释器使用的机制保证只有一个线程一次执行Python字节码。 这简化了CPython实现,通过使对象模型(包括关键的内置类型(如dict)) 隐式地安全防止并发访问。

锁定整个解释器使解释器更容易被多线程处理,这将损害多处理器机器 所提供的并行性。但是,一些扩展模块(不管是标准 的还是第三方的)都是设计的,以便在执行计算密集型任务(如压缩或哈希) 时释放GIL。而且,在执行I/O时,GIL总是被释放。过去创建“自由线程”解释器 (以更细的粒度锁定共享数据)的努力并没有成功,因为在常见的单处理器案例 中性能受到了影响。

在Python层面,如果需要多线程支持,可能得不到多线程的好处,因为有一个全局锁。 因此需要在操作系统层面进行考虑。