news 2026/5/3 9:00:30

Python 3.13 预览版尝鲜:NoGIL (自由线程) 真的来了!多核 CPU 终于不再围观

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 3.13 预览版尝鲜:NoGIL (自由线程) 真的来了!多核 CPU 终于不再围观

标签:#Python3.13 #NoGIL #多线程 #性能优化 #并发编程


🛑 前言:GIL 到底锁住了什么?

在 Python 3.13 之前,当你启动 4 个线程去跑计算任务时,操作系统确实看到了 4 个线程,但在 Python 虚拟机内部,它们必须抢锁
拿到 GIL 的线程才能跑,没拿到的只能干等。于是,原本应该并行的任务,变成了“快速切换的串行任务”。

GIL 与 NoGIL 的执行对比 (Mermaid):

✅ Python 3.13 (NoGIL)

独立执行

独立执行

独立执行

线程 A

CPU 核 1

线程 B

CPU 核 2

线程 C

CPU 核 3

真正的多核并行!

❌ 传统 Python (有锁)

抢锁 -> 执行 -> 释放

等待 -> 抢锁 -> 执行

等待 -> ...

线程 A

CPU

线程 B

线程 C

同一时刻只有 1 个线程在跑


🛠️ 一、 什么是“自由线程 (Free-Threading)”?

Python 3.13 引入了一个新的构建模式:Free-Threading
它通过移除 GIL,并引入更细粒度的锁(Mimalloc 内存分配器、偏向锁等技术),实现了真正的多线程并行。

你需要知道的 3 个事实:

  1. 它不是默认开启的:你下载的标准安装包依然有 GIL。你需要下载专门的free-threading版本或源码编译。
  2. 单线程略有变慢:去掉了 GIL,为了保证线程安全,Python 内部加了很多细碎的锁。这导致单线程运行速度比标准版慢了约 10%(未来会优化)。
  3. 多线程起飞:在多核 CPU 上,CPU 密集型任务的性能随核数线性增长。

🧪 二、 实战:编译安装 NoGIL 版本

目前主流的包管理器(如 apt, brew)还没完全跟进。作为极客,我们直接从源码编译。

1. 获取源码
# 下载 Python 3.13 源码 (请去官网找最新 Release 或 RC 版 tarball)wgethttps://www.python.org/ftp/python/3.13.0/Python-3.13.0b1.tgztar-xvf Python-3.13.0b1.tgzcdPython-3.13.0b1
2. 编译配置 (关键一步)

重点在于--disable-gil参数。

# 配置编译参数./configure --disable-gil --enable-optimizations# 编译并安装 (为了不污染环境,建议安装到特定目录或使用 altinstall)make-j8sudomakealtinstall
3. 验证是否成功

运行新编译的 Python,检查 GIL 状态。

# python3.13 (注意看启动 banner)importsysimportsysconfig# 检查是否开启了 free-threadingprint(sysconfig.get_config_var("Py_GIL_DISABLED"))# 输出: 1 表示成功!# 或者在 3.13 新增的 APIprint(sys._is_gil_enabled())# 输出: False 表示无锁!

🏎️ 三、 性能压测:真的变快了吗?

我们写一段经典的CPU 密集型代码(计算斐波那契数列),对比有锁版和无锁版。

测试脚本benchmark.py:

importthreadingimporttimeimportsysdeffib(n):ifn<=1:returnnreturnfib(n-1)+fib(n-2)defworker():# 计算第 35 位斐波那契数 (纯 CPU 计算)fib(35)defrun_threads(n_threads):start=time.time()threads=[]for_inrange(n_threads):t=threading.Thread(target=worker)t.start()threads.append(t)fortinthreads:t.join()end=time.time()print(f"线程数:{n_threads}, 耗时:{end-start:.2f}秒")if__name__=="__main__":# 检测当前环境gil_status="有锁(GIL)"ifsys._is_gil_enabled()else"无锁(NoGIL)"print(f"当前环境: Python{sys.version.split()[0]}- [{gil_status}]")# 跑 4 个线程run_threads(4)

测试结果对比 (假设 4 核 CPU):

  • 普通 Python 3.12 (有 GIL):

  • 4 个线程几乎是串行执行的。

  • 耗时:约 12.5 秒(单次耗时 x 4)。

  • CPU 占用:只有 1 个核是 100%,其他核围观。

  • Python 3.13 (NoGIL):

  • 4 个线程同时在 4 个核上跑。

  • 耗时:约 3.2 秒(接近单次耗时)。

  • CPU 占用:4 个核全部飙到 100%!

结论:性能提升了接近4 倍。这在以前的 Python 中是不敢想象的。


⚠️ 四、 避坑指南:生态还没准备好

虽然 NoGIL 很香,但现在千万别用于生产环境

  1. C 扩展库的噩梦
    Python 强大的生态(NumPy, Pandas, PyTorch)底层都是 C/C++。
    以前写 C 扩展时,开发者默认“有 GIL 保护”,不需要处理复杂的线程安全。
    现在 GIL 没了,这些库如果不重写底层锁逻辑,运行时会直接崩溃 (SegFault)
    注:NumPy 等头部库正在积极适配,但还需要时间。
  2. 单线程性能回退
    如果你只是写简单的脚本,不需要多核,用 NoGIL 版本反而会慢一点点。
  3. 内存占用增加
    为了实现无锁,解释器内部维护了更多的数据结构,内存消耗会有所上升。

🎯 总结

Python 3.13 的 NoGIL 是 Python 诞生 30 年来最大的底层变革。
它标志着 Python 终于要在多核计算领域摘掉“低能”的帽子了。

对于我们开发者来说:

  • Web 服务:以后可能不再需要Gunicorn开多个进程了,直接开多线程即可,内存更省。
  • AI/数据处理:纯 Python 写的并行算法将变得可行。

Next Step:
赶紧去编译一个 NoGIL 版本的 Python,把你的 CPU 跑满,截图发给你的 Java/Go 同事,告诉他们:“看,Python 的多线程也能把 CPU 烧出香味了!”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:47:32

单载波中继系统资源分配算法综述与实现

一、引言 单载波中继系统&#xff08;Single-Carrier Relay System, SC-RS&#xff09;通过中继节点扩展覆盖范围、提升频谱效率&#xff0c;是未来无线通信&#xff08;如5G/6G&#xff09;的关键技术之一。资源分配算法是其核心&#xff0c;旨在优化功率、子载波、中继节点等…

作者头像 李华
网站建设 2026/5/1 11:01:25

基于元胞自动机的室内人员疏散基础模型

一、模型核心架构网格划分与状态定义 空间离散化&#xff1a;将疏散区域划分为 NN的均匀网格&#xff0c;每个元胞代表 0.4m0.4m的物理空间。 状态分类&#xff1a; 0&#xff1a;空闲单元格&#xff08;可行走区域&#xff09; 1&#xff1a;人员&#xff08;初始随机分布&…

作者头像 李华
网站建设 2026/5/3 3:55:25

【teambition 二开】TB JSAPI 学习

开始使用通过 script 标签引入使用 script 标签加载以下 jshttps://g.alicdn.com/code/npm/alife/teambition-jsapi/0.0.33/tb-jsapi.umd.js文件概述这是一个 Teambition JSAPI 库&#xff08;版本 0.0.33&#xff09;&#xff0c;提供了与 Teambition 平台交互的 JavaScript A…

作者头像 李华
网站建设 2026/4/23 11:27:32

基于java的城市公交在线查询系统

3系统分析 所谓系统分析&#xff0c;就是将自己对某一系统的构思以书面形式体现出来&#xff0c;并以此为基础&#xff0c;进行后续的软件设计和开发。在软件开发初期&#xff0c;人们对系统分析还不够重视&#xff0c;导致最终系统验收时&#xff0c;需要进行较大修改&#xf…

作者头像 李华
网站建设 2026/4/29 0:20:57

华为:共建鸿蒙世界,鸿蒙生态向前再迈一步!

鸿蒙 华为鸿蒙系统刚推出时&#xff0c;还有不少不同的声音&#xff0c;甚至有人嘲笑它是“安卓套壳”版。如今&#xff0c;已过去三年&#xff0c;鸿蒙OS一步一个脚印&#xff0c;一路劈荆斩刺&#xff0c;不仅突破了生死线&#xff0c;还迎来了新的成果。 11月4日&#xff0c…

作者头像 李华