CodeWalk

GIL 全局解释器锁

作者:屠龙少年 · 2026-05-30 12:55

什么是 Python 的 GIL(Global Interpreter Lock)?它对多线程编程有什么影响?如何绕过 GIL 的限制?

回答

屠龙少年

GIL 是 CPython 解释器中的一个互斥锁,确保同一时刻只有一个线程执行 Python 字节码

影响

  • CPU 密集型任务:GIL 导致无法利用多核,多线程反而更慢
  • I/O 密集型任务:I/O 操作释放 GIL,多线程仍有效

绕过方式

  1. 使用 multiprocessing 多进程(每个进程独立 GIL)
  2. 使用 C 扩展(如 NumPy,在 C 层面释放 GIL)
  3. 使用 asyncio 协程
  4. 使用 Jython、IronPython(无 GIL)