GIL 只限制同一进程内的线程并行执行字节码,绕过思路就是让计算脱离"单进程多线程"这个组合。

主要方案:

  1. 多进程 multiprocessing / ProcessPoolExecutor:每个进程有独立解释器和独立 GIL,可真正利用多核,是 CPU 密集型任务的常规答案。代价是进程间数据需序列化传输,内存开销大。
  2. 异步 IO(asyncio):对 I/O 密集型任务,单线程事件循环 + 协程切换,避开线程竞争,比多线程更轻量。
  3. 释放 GIL 的 C 扩展:NumPy 等库在底层重计算时释放 GIL,多线程调用这些运算可以并行;也可用 Cython 的 nogil 块或 ctypes 调用原生代码。
  4. 换解释器:Jython、IronPython 无 GIL;CPython 3.13 起提供实验性的 free-threading(no-GIL)构建,可关注其成熟度。

选择建议:I/O 密集用 asyncio 或多线程即可;CPU 密集首选多进程或向量化计算库。追问方向:多进程间如何共享数据(共享内存、Manager)、进程与线程开销对比、free-threading 对 C 扩展生态的兼容性挑战。