HarmonyFidelisHarmonyFidelis
登录
新闻重大项目主要机构学院

Python 3.13:GIL 变为可选(实验性 free-threading 模式)

Python 3.13 引入 Free-threaded 模式,使线程能够在多核架构上真正并行执行。

Source: peps.python.org

Python 3.13:GIL 变为可选(实验性 free-threading 模式)

Python 基金会于 2024 年 10 月初发布了 Python 3.13。该版本的主要技术演进是引入了在 PEP 703 实现中定义的“Free-threaded”模式,它会禁用 GIL(Global Interpreter Lock)。

通俗解读

在此之前,Python 解释器就像一个只有一支话筒在传递的房间:多个线程可以并存,但一次只有一个能发言,因为 GIL 阻止它们同时执行字节码。在多核机器上,这意味着程序一旦试图并行计算,可用算力就有一部分闲置。Python 3.13 让这把锁变成可选:现在可以按需编译解释器,把计算负载分摊到所有可用的物理核心上,而不产生阻塞。但保留意见不小——该功能以实验性质提供,GIL 默认仍然启用,用 C 开发的库需要做适配。因此这是一场过渡的开端,而非立刻切换。

版本概览

参数内容
版本Python 3.13
发布方Python 基金会
发布时间2024 年 10 月初
主要技术演进引入“Free-threaded”模式
规范PEP 703 — Making the Global Interpreter Lock Optional in CPython
技术效果禁用 GIL(Global Interpreter Lock)
实施方式由开发者编译解释器
状态实验性 —— GIL 默认仍然启用
生态前提用 C 开发的库需要适配
目标范围线程在多核架构上真正并行执行

技术解释

1. GIL 锁住了什么 —— 历来,GIL 阻止同一个 Python 解释器中的多个线程同时执行字节码。

2. 在多核处理器上的代价 —— 这一约束严重限制了并行应用在多核处理器上的性能。

3. Free-threaded 模式带来了什么 —— 在该版本中,开发者可以编译解释器,把计算负载分摊到所有可用的物理核心上,而不产生阻塞。

前后对比

方面带 GIL 的解释器Free-threaded 模式(Python 3.13)
字节码执行同一解释器中一次仅一个线程线程真正并行
核心利用并行应用在多核处理器上的性能严重受限计算负载分摊到所有可用的物理核心
阻塞对字节码执行的全局锁不产生阻塞
启用方式默认行为专门编译解释器,以实验性质提供
用 C 开发的库沿用原有行为需要适配

因果链

解释器中历来存在的 GIL → 一次只有一个线程执行字节码 → 并行应用在多核处理器上的性能严重受限 → PEP 703:让这把锁变为可选 → Python 3.13 引入 Free-threaded 模式 → 解释器可编译为把计算分摊到所有可用的物理核心 → 用 C 开发的库进行适配 → Python 生态向全面多核优化过渡

局限与范围

尽管该功能以实验性质提供(GIL 默认仍然启用),且需要对用 C 开发的库进行适配,此次发布仍开启了 Python 生态向全面多核优化的过渡。

来源

2026 年 8 月事实核查中验证过的参考资料:本简报的论断即依据这些页面进行核对。

  1. PEP 703 — Making the Global Interpreter Lock Optional in CPython
  2. What's New In Python 3.13 — 官方文档
  3. Python 3.13.0 release — python.org