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 烧出香味了!”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1124597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

救命神器2026 MBA必备!10个AI论文平台深度测评与推荐

救命神器2026 MBA必备&#xff01;10个AI论文平台深度测评与推荐 2026年MBA学术写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文平台在学术研究中的作用日益凸显。对于MBA学生而言&#xff0c;撰写高质量的论文不仅是…

从你提供的内容来看,这个问题似乎是 Git 仓库配置问题。让我分析可能的原因:## 主要问题表现:1. **明显的错误消息**:`Unable to correct to a reposito

从你提供的内容来看&#xff0c;这个问题似乎是 Git 仓库配置问题。让我分析可能的原因&#xff1a;## 主要问题表现&#xff1a;1. **明显的错误消息**&#xff1a;Unable to correct to a repository at URL 2. **大量的重复字符串**&#xff1a;KEYNAMEINKEYNAMEINKEYNAMEIN…

springboot基于java的地方特色美食分享管理系统

2系统需求分析 需求分析的首要是要分析用户的需求&#xff0c;知道用户存在的一些情况&#xff0c;并且要明确用户的使用状况&#xff0c;然后设计规划解决的问题。其中在使用定性的分析以及定量的分析&#xff0c;从这两个方面获取用户的需求。一方面定性的分析获得的应该是用…

【课程5.2】功能设计:城管全域数据地图(坐标匹配、设施标注逻辑)

严格基于指定文件&#xff08;《01智慧城市一网统管平台-系统总体架构及其功能要点》《03智慧城市一网统管平台-系统数据库表》《05智慧城市一网统管平台 数据中枢系统功能设计》《06行业应用系统功能设计-01城管住建.docx》《02数据库表设计命名规范及英文简称对照表》&#x…

AI智慧司牧服务系统:打造草原上的“千里眼”与“数字牧羊人”

养牛羊靠啥&#xff1f;以前是“看天吃饭凭老经验”——半夜冒雨巡查、靠眼睛辨疾病、饲喂全凭感觉&#xff0c;辛苦不说还容易出错。而AI智慧司牧服务系统&#xff0c;就像给牧场配了个“全天候AI管家”&#xff0c;用实实在在的技术解决养殖痛点&#xff0c;让养殖从“经验驱…

springboot基于java的隔离人员的管理系统设计与实现

3系统分析 3.1 系统需求分析 在当下社会的生活中&#xff0c;互联网已经非常普遍和十分重要。利用好互联网大数据等技术&#xff0c;可以帮助解决很多问题。当下隔离人员的管理方面都面临各自的问题。根据这一常见现象&#xff0c;本隔离人员的管理系统的出现就有很大的需求。该…

做OEM代工找不到靠谱工厂?这款工具帮你一键筛选源头工厂

在品牌创业、跨境电商或新品开发过程中&#xff0c;OEM&#xff08;贴牌代工&#xff09;模式已成为主流策略&#xff0c;这让企业得以专注于设计与营销&#xff0c;将生产环节交给专业工厂负责&#xff0c;其实事实上&#xff0c;理想固然美好&#xff0c;但现实却常常让人感到…

LlamaIndex 高级 RAG:实现“递归检索”与“文档层级索引”,解决长文档问答的精度丢失问题

标签: #LlamaIndex #RAG #NLP #向量数据库 #递归检索 #架构设计 📉 前言:Naive RAG 的“断章取义”之痛 基础 RAG(Naive RAG)最大的问题在于 “检索单元 = 生成单元”。 你为了检索精准,把 Chunk 切得很小(比如 256 tokens)。但当这些碎片喂给 LLM 时,它们就像拼图的…

最新实测9款AI论文生成器!查重率从82%骤降至5%,限时公开!

最后72小时窗口期&#xff01; 当你的同学还在为查重率82%而彻夜难眠时&#xff0c;第一批行动派已经用这个方法&#xff0c;在30分钟内拿到了5万字、查重率仅5%的优质初稿。毕业、投稿的生死线就在眼前&#xff0c;你还在犹豫什么&#xff1f; 深夜的图书馆&#xff0c;屏幕上…

三菱Q系列PLC之QD77MS16总线控制伺服项目实战分享

三菱Q系列PLC ,QD77MS16走总线控制伺服项目&#xff0c;实际应用的&#xff0c; 程序结构清晰明了&#xff0c;通俗易懂&#xff0c;8个伺服&#xff0c;PLC程序有完整的注释&#xff0c;有伺服设定参数&#xff0c;三菱触摸屏程序&#xff0c;电气BOM &#xff0c;电气I/O表&a…

layui提交

<input type"button" id"btnSave" value"确认保存" lay-submit class"layui-btn layui-btn-normal" lay-filter"Save" /><script type"text/javascript"> layui.use([index, set], function () {var …

基于spark的西南天气数据的分析与应用

收藏关注不迷路&#xff01;&#xff01; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;希望帮助更多…

奇正沐古:靠谱的爆品打造品牌咨询公司

为何同样属性的产品&#xff0c;用户宁愿花更高的价格买“熟悉牌子”&#xff0c;也不愿尝试性价比更高的新选项&#xff1f;品牌营销咨询公司奇正沐古&#xff0c;认为核心原因只有一个——信任缺失。客户信任&#xff0c;是商业交易的“隐形货币”&#xff0c;没有信任&#…

UltraShape 1.0: 高保真三维形状生成:基于可扩展几何优化

&#x1f4d6; 摘要 本报告介绍了UltraShape 1.0——一个可扩展的三维扩散框架&#xff0c;用于生成高保真三维几何体。该方案采用两阶段生成流程&#xff1a;首先生成粗糙的全局结构&#xff0c;然后进行细化以产出细节丰富的高质量几何体。 为实现可靠的三维生成&#xff0…

大模型备案全攻略|AI从业者必看避坑指南

✨2026 AI行业合规门槛升级&#xff01;做生成式大模型相关业务的宝子们注意啦&#xff5e; 不管你是团队自研大模型&#xff0c;还是基于开源模型做二次微调&#xff0c;只要最终要面向公众提供服务&#xff08;比如上线AI写作工具、AI绘画平台、智能客服系统等&#xff09;&a…

(167页PPT)制造业精益数字化转型解决方案(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/AI_data_cloud/89525624 资料解读&#xff1a;&#xff08;167 页&#xff09;制造业精益数字化转型解决方案 详细资料请看本解读文章的最后内容 本解决方…

接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)

近期准备优先做接口测试的覆盖&#xff0c;为此需要开发一个测试框架&#xff0c;经过思考&#xff0c;这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的&#xff0c;测试人员会希望很快能得到结果反馈&#xff0c;然而接口的数量一般都很多&#xff0c;而且会越来越…

(168页PPT)华为流程管理精要体系构建规划设计运营评估与持续改善(附下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/AI_data_cloud/89540503 资料解读&#xff1a;华为流程管理精要体系构建规划设计运营评估与持续改善 详细资料请看本解读文章的最后内容 华为流程管理体系…

深度测评8个一键生成论文工具,本科生轻松搞定毕业论文!

深度测评8个一键生成论文工具&#xff0c;本科生轻松搞定毕业论文&#xff01; AI 工具如何改变论文写作的未来 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始关注 AI 工具在学术写作中的应用。尤其是在面对毕业论文这一重要任务时&#xff0c;如何高效、高质量…

Flutter 插件通信架构设计:从 Channel 到 FFI 的完整边界

在 Flutter 项目中&#xff0c;一旦涉及&#xff1a;蓝牙 / 串口 / USB机器人 / IoT / 设备 SDK音视频 / 图像 / AI系统能力 / 第三方原生库你本质上就进入了一个领域&#xff1a; &#x1f449; Flutter 插件通信架构设计很多项目前期“能跑就行”&#xff0c; 后期会必然遇到…