Python多线程为什么跑不满CPU?常见原因与解决方法
Python多线程在CPU密集型任务中受全局解释器锁(GIL)限制,无法真正并行,甚至因锁竞争耗时更多。I O密集型任务则可利用线程。绕过方案包括多进程、C扩展库和异步编程。Python3 13起实验性提供无GIL版本。
两年前,我接手了一个让技术人员深感困惑的优化任务:提升一个Python数据处理程序的性能。原先的单线程代码处理200万条数据需要耗时12秒。考虑到服务器配备8核CPU,我计划开启8个线程并行计算,预期时间能缩短至1.5秒,于是满怀信心地进行了多线程改造。
```python
import threading
import time
def cpu_task(n):
"""纯计算任务:累加"""
total = 0
for i in range(n):
total += i
return total
# 单线程
start = time.time()
for _ in range(4):
cpu_task(50_000_000)
print(f"单线程: {time.time() - start:.2f}秒")
# 4个线程并行
threads = []
start = time.time()
for _ in range(4):
t = threading.Thread(target=cpu_task, args=(50_000_000,))
threads.append(t)
t.start()
for t in threads:
t.join()
print(f"4线程: {time.time() - start:.2f}秒")
```
跑完一看结果,直接懵了:
```
单线程: 10.21秒
4线程: 12.58秒
```
多线程反而更慢了?盯着屏幕看了足足五分钟,不敢相信自己的眼睛。
后来才知道,这压根不是Python的bug,而是它最著名的“特性”——GIL(全局解释器锁)。

来源:https://developer.aliyun.com/article/1744612
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。
相关推荐
补充同频道和同主题内容,方便继续浏览更多相关内容。
同类最新
继续查看同栏目最近更新的文章。
RAG四标融合企业知识资产体系四库协同GEO优化实践
生成式AI正在彻底改写信息检索的底层逻辑。传统SEO依赖关键词堆砌和外链建设的策略,在大模型的内容采信规则下已经基本失效。取而代之的,是生成式引擎优化(GEO)。它不再关注外链数量,而是重点衡量你的知识是否结构化、证据链是否坚实、信源是否可靠——这些维度才是RAG(检索增强生成)架构真正看重的核心指
一个普通上班人分享WorkBuddy使用心得与真实体验
前言 最近我开始使用WorkBuddy——这是腾讯推出的一款AI办公工作台。差不多用了一周时间,趁印象还新鲜,把真实的使用感受记录下来,给还在犹豫的朋友做个参考。不吹不黑,只说实际体验。 初印象:不只是聊天机器人 之前用过不少AI工具,大多数就是个对话框,你问它答,答完就结束了。WorkBuddy不
AI幻觉变真功能实战教程:App Inventor 2视频录制拓展一周开发实录
先讲一个颇具戏剧性的开端。 这件事的开端颇显荒诞——有用户前来咨询,称AI Pro版的介绍中提到我们有一款“视频录制拓展”。团队全体成员都感到困惑,翻遍产品列表,发现根本不存在该组件。AI那种“一本正经胡说八道”的能力,这次确实让我们陷入尴尬。 按常理,此事到此便可结束——一句“抱歉,暂时没有这个拓
别再混淆OLAP和SQL-on-Hadoop两者查询本质不同
OLAP和SQL-on-Hadoop虽都使用SQL查询数据,但本质不同。SQL-on-Hadoop负责海量数据批量计算与ETL,查询速度秒级至分钟级;OLAP通过预聚合实现毫秒级多维分析,适合BI报表。两者在数据平台分工协作,前者是后厨加工,后者是前台快速服务。
GEO优化深度解析:AI偏好FAQ还是长文内容?
在GEO优化中,AI对内容形式无统一偏好:FAQ在简单查询中引用率41%,长文在复杂查询中达58%。内容应基于用户意图选择形式,FAQ适配简单事实类问题,长文建立主题权威,两者互补而非替代。
