为什么 Python 多线程越跑越慢?彻底搞懂 GIL!

简介: Python 的 GIL(Global Interpreter Lock,全局解释器锁) 是 CPython 解释器中的一把互斥锁,用于保证同一时间只有一个线程在执行 Python 字节码。使得 py 写得非常简单方便好理解。

本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!

  • 🚀 魔都架构师 | 全网30W技术追随者
  • 🔧 大厂分布式系统/数据中台实战专家
  • 🏆 主导交易系统百万级流量调优 & 车联网平台架构
  • 🧠 AIGC应用开发先行者 | 区块链落地实践者
  • 🌍 以技术驱动创新,我们的征途是改变世界!
  • 👉 实战干货:编程严选网

Python 的 GIL(Global Interpreter Lock,全局解释器锁) 是 CPython 解释器中的一把互斥锁,用于保证同一时间只有一个线程在执行 Python 字节码。使得 py 写得非常简单方便好理解。


为什么会导致性能问题?

  • 单核限制:即使你在多核 CPU 上启动多个 Python 线程执行计算,由于 GIL 的存在,这些线程在同一时刻也只能使用一个 CPU 核心,无法实现真正的多核并行计算
  • 频繁上下文切换:当一个线程在执行时,如果遇到 I/O 操作或达到执行时间片,它会释放 GIL。此时其他线程会去争抢 GIL,这种频繁的“加锁、释放、线程调度”会产生额外的 CPU 开销,让多线程在 CPU 密集型任务中不仅不提速,反而可能比单线程更慢
  • 对任务类型的影响不同:
    • CPU 密集型任务(如大量数学计算、图像处理):受 GIL 严重影响,多线程性能低下
    • I/O 密集型任务(如网络请求、文件读写):当线程在等待 I/O 时会主动释放 GIL,因此多线程依然能发挥较好效果

解决或绕过 GIL 性能问题

  • 使用多进程(multiprocessing):
    • 通过创建多个独立的进程来绕过 GIL。每个进程都有独立的 Python 解释器和内存空间,能够完全利用多核 CPU 的计算能力
  • 使用 C 扩展(C-Extensions):
    • 像 NumPy、Pandas 等底层由 C/C++ 实现的库,在执行核心计算时会主动释放 GIL,从而实现真正的多线程并行。所以很多应用高层 py,底层依旧是其他语言
  • 异步编程(asyncio):
    • 适用于高并发的 I/O 密集型任务,通过单线程事件循环(Event Loop)避免了多线程带来的线程切换与锁竞争开销
  • 尝试无 GIL 构建版本(Free-Threading,PEP 703):
    • 从 Python 3.13 开始,官方引入了实验性的无 GIL(Free-threaded) 构建版本(安装时可通过 --disable-gil 启用),允许真正的多线程多核并行
目录
相关文章
|
传感器 BI 定位技术
提高效率 |ArcGIS Pro 中所有快捷键一网打尽
提高效率 |ArcGIS Pro 中所有快捷键一网打尽
757 0
|
NoSQL 数据可视化 Redis
Datagrip2020连接redis,可视化插件安装
Datagrip2020连接redis,可视化插件安装
1976 0
|
10天前
|
人工智能 编解码 物联网
ComfyUI-v9.5 整合包部署教程:ComfyUI+A1111 双环境搭建,附脚本与批量出图 API 代码
秋叶ComfyUI-v9.5网盘资源包,集成ComfyUI节点版与A1111表单版双环境,模型通用。含SD/MJ提示词库、完整模型插件及视频教程,支持PowerShell一键迁移与Python API批量绘图,适配漫剧/短视频高效创作。(239字)
|
2月前
|
弹性计算 小程序 iOS开发
阿里云无影云电脑个人版指南:快速购买、选择无影套餐、配置云电脑、连接及使用全流程
阿里云无影云电脑个人版,支持Windows/macOS/手机多端接入,提供黄金至黑金6档灵活套餐(14.9元/月起),含系统盘、数据盘、带宽及灵豆配额,适用于办公、学习、设计与游戏。一键配置、即连即用,休眠不计费,数据安全可靠。
1037 2
|
3月前
|
人工智能 弹性计算 数据挖掘
2026年价格最便宜的阿里云服务器选择:38元、99元、199元购买资格、适用场景与选购指南参考
2026年阿里云推出三款高性价比云服务器,覆盖不同用户需求。新用户专属轻量应用服务器2核2G仅38元/年(每日10点/15点开抢),200M峰值带宽支持WordPress、OpenClaw等镜像,适合个人博客、轻量AI应用;新老用户同享的经济型e实例2核2G 3M固定带宽99元/年,续费同价可长期持有,适配企业官网、小型电商;通用算力型u1实例2核4G 5M固定带宽199元/年,性能与扩展性更强,满足中型网站、数据分析、API服务需求。用户可根据预算、业务规模与未来扩展规划,选择适配的实例实现成本与性能的最优平衡。
|
9月前
|
弹性计算 Linux 网络安全
学习笔记:阿里云新手账号注册、实名认证、选购ECS云服务器、部署管理指南
阿里云ECS(弹性计算服务)是一种无需购买物理服务器即可使用计算资源的服务,让您像使用水电一样便捷获取服务器算力。本指南将详细拆解从账号注册到服务器管理的完整流程,帮助新手用户快速掌握云服务器使用技巧。
968 1
|
4月前
|
机器学习/深度学习 自然语言处理 C++
大模型应用:大模型实测对比:1.8B vs 6B,本地部署的极限拉扯与真实体感.119
本文对比Qwen1.5-1.8B与ChatGLM2-6B两大中文大模型:前者轻量易部署,CPU即可运行,代码简洁,但易幻觉、指令遵循弱;后者参数量大,中文理解与逻辑更强,但需GPU、加载复杂。二者代表“小而美”与“大而全”的典型路径。
719 2
大模型应用:大模型实测对比:1.8B vs 6B,本地部署的极限拉扯与真实体感.119
|
5月前
|
人工智能 自动驾驶 安全
IDC报告:阿里云占据中国汽车公共云42%市场份额
IDC最新发布的《中国汽车云市场(2025年下半年)跟踪》报告显示:2025年下半年中国汽车公共云IaaS市场持续高速增长,市场规模达68亿元人民币。其中阿里云以42%的市场份额稳居第一。自2021年起,阿里云已连续五年蝉联中国汽车公共云IaaS市场榜首。
|
缓存 人工智能 架构师
释放数据潜力:利用 MCP 资源让大模型读懂你的服务器
MCP(Model Control Protocol)资源系统是将服务器数据暴露给客户端的核心机制,支持文本和二进制两种类型资源。资源通过唯一URI标识,客户端可通过资源列表或模板发现资源,并使用`resources/read`接口读取内容。MCP还支持资源实时更新通知及订阅机制,确保动态数据的及时性。实现时需遵循最佳实践,如清晰命名、设置MIME类型和缓存策略,同时注重安全性,包括访问控制、路径清理和速率限制等。提供的示例代码展示了如何用JavaScript和Python实现资源支持。
1474 80
|
9月前
|
存储 编解码 缓存
2026年上亿用户级短视频 APP 的服务器成本与架构解析
上亿用户规模的短视频 APP 需依托复杂的分布式架构支撑高并发、大流量场景,其服务器相关成本不仅包含硬件资源费用,还涉及存储、分发、安全等全链路支出。从行业实践来看,这类应用的年度服务器及配套服务成本通常达数千万元级别,其中 CDN 分发、云服务器集群、数据存储是核心开销项,以下结合技术架构与实际案例展开解析。

热门文章

最新文章