讲师中心 微信公众号
AI工具推荐 视频效率加速

Python GIL 到底限制了什么?

星晨姑娘_9445

星晨姑娘_9445

发布时间:2026-01-17 22:50:55

|

690人浏览过

|

来源于php中文网

原创

GIL是CPython为保护内部数据结构而设的线程锁,仅限制CPU密集型多线程并行;I/O密集型任务、多进程、C扩展(如NumPy)及异步编程可绕过其限制。

python gil 到底限制了什么?

Python 的 GIL(Global Interpreter Lock,全局解释器锁)并不限制所有类型的并发,它只限制同一进程内多个 CPython 线程对 Python 对象的并发访问。换句话说,GIL 的核心作用是保护 CPython 解释器内部的数据结构(比如引用计数、字典哈希表等),而不是为了“防止并行”而存在。

它限制的是多线程 CPU 密集型任务的真正并行

当多个线程都在执行纯 Python 计算(如循环、数值运算、字符串处理)时,GIL 会强制它们轮流执行——任意时刻只有一个线程能执行 Python 字节码。即使你有 8 个 CPU 核心,10 个线程的 CPU 密集型程序也几乎不会比单线程快。

  • 每个线程执行一段时间(默认约 5ms 或 100 条字节码指令)后,会主动释放 GIL,让其他线程竞争获取
  • 线程在等待 I/O(如文件读写、网络请求、sleep)时会自动释放 GIL,此时其他线程可以运行
  • 调用某些 C 扩展(如 NumPy 的底层计算、正则匹配、zlib 压缩)也可能释放 GIL,实现真正的并行

它不限制 I/O 密集型任务的并发效率

对于大量等待网络响应、磁盘读写或用户输入的任务,GIL 影响很小。因为线程大部分时间不在执行 Python 代码,而是在操作系统内核中阻塞;一旦阻塞,GIL 就被释放,其他线程立刻可以上 CPU。

python全能编程助手
python全能编程助手

SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、

下载
  • 用 threading 启动 100 个线程去发 HTTP 请求,整体耗时通常远低于串行执行
  • asyncio 虽然不依赖线程,但原理类似:单线程内通过事件循环调度 I/O,避免了 GIL 争抢

它不阻碍多进程并行,也不影响 C 扩展的内部并行

GIL 是线程级的,每个进程有独立的解释器状态和独立的 GIL。multiprocessing 模块通过 fork 或 spawn 新进程,天然绕过 GIL 限制。

立即学习“Python免费学习笔记(深入)”;

  • NumPy 的矩阵乘法、Pandas 的 groupby、OpenCV 的图像处理等,底层用 C/C++/Fortran 实现,并在计算前释放 GIL,结束后再加回
  • 你自己写的 C 扩展,只要显式调用 Py_BEGIN_ALLOW_THREADS / Py_END_ALLOW_THREADS,也能安全地释放 GIL

它不是 Python 语言规范,而是 CPython 的实现细节

PyPy、Jython、IronPython 等其他 Python 实现没有 GIL(或机制不同)。CPython 加 GIL 主要是为了简化内存管理(尤其是引用计数)和保证 C 扩展兼容性,不是语言设计的必然要求。

  • 去掉 GIL 在技术上可行(如 PyPy 的 STM 尝试),但会显著增加解释器复杂度和单线程性能开销
  • 官方明确表示:不会在短期内移除 GIL;替代方案(如子解释器 + 更细粒度锁)正在稳步推进中(PEP 684、PEP 554)
GIL 不是 bug,也不是缺陷,它是 CPython 在安全性、兼容性、实现简洁性和单线程性能之间做的务实权衡。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

300

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

212

2026.01.31

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

311

2026.04.13

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1558

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2244

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5764

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

4829

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

6554

2024.03.22

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

60

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn