GIL 全局解释器锁
什么是 Python 的 GIL(Global Interpreter Lock)?它对多线程编程有什么影响?如何绕过 GIL 的限制?
回答
屠龙少年
GIL 是 CPython 解释器中的一个互斥锁,确保同一时刻只有一个线程执行 Python 字节码。
影响:
- CPU 密集型任务:GIL 导致无法利用多核,多线程反而更慢
- I/O 密集型任务:I/O 操作释放 GIL,多线程仍有效
绕过方式:
- 使用
multiprocessing多进程(每个进程独立 GIL) - 使用 C 扩展(如 NumPy,在 C 层面释放 GIL)
- 使用
asyncio协程 - 使用 Jython、IronPython(无 GIL)