Files
Knowledge/0 编程/Python GIL 锁.md
T

1.2 KiB

  1. GIL(全局解释器锁)的本质:

    • GIL是CPython解释器中的一个互斥锁
    • 同一时间只允许一个线程执行Python字节码
    • 目的是保护解释器内部数据结构,防止竞争条件
  2. GIL对多线程的影响:

    • CPU密集型任务:多线程无法利用多核优势,性能提升有限甚至更差
    • I/O密集型任务:线程在等待I/O时会释放GIL,多线程可以有效提高性能
    • 线程切换和GIL争抢会带来额外开销
  3. 多线程 vs 多进程选择:

场景 推荐 原因
CPU密集型计算 多进程 避免GIL限制,充分利用多核
I/O密集型任务 多线程 轻量级,切换成本低
需要共享大量数据 多线程 进程间通信成本高
需要高稳定性 多进程 进程崩溃不影响其他进程
需要启动大量并发 协程 更轻量,支持更高并发
  1. 解决方案:

    • 使用multiprocessing模块进行多进程编程
    • 使用concurrent.futures线程/进程池
    • 使用Jython、IronPython等无GIL的解释器
    • 将CPU密集型代码用C扩展实现