首页/新闻资讯/正文详情

HoRain云--Python 性能剖析实战:cProfile、py-spy、memory_profiler

发布时间:2026/9/25 20:27:27 来源:云帆数科 栏目:资讯中心
HoRain云--Python 性能剖析实战:cProfile、py-spy、memory_profiler
本文讲解 Python 性能剖析工具包括 cProfile、line_profiler、py-spy、memory_profiler、tracemalloc并给出优化案例。正文1. 性能剖析思路先测量再优化。找到瓶颈CPU、内存、IO、锁。避免过早优化。2. cProfilebash复制下载python -m cProfile -s cumtime script.py代码中python复制下载import cProfile cProfile.run(main(), sortcumtime)输出字段ncalls调用次数。tottime函数自身耗时。cumtime累计耗时。3. pstats 分析python复制下载import cProfile, pstats cProfile.run(main(), profile.out) p pstats.Stats(profile.out) p.sort_stats(cumtime).print_stats(20)4. line_profiler逐行分析bash复制下载pip install line_profilerpython复制下载profile def slow_func(): total 0 for i in range(1000000): total i return totalbash复制下载kernprof -l -v script.py5. py-spy无需修改代码采样分析bash复制下载pip install py-spy py-spy top --pid 12345 py-spy record -o profile.svg --pid 12345生成火焰图适合生产环境。6. memory_profilerbash复制下载pip install memory_profilerpython复制下载from memory_profiler import profile profile def use_memory(): a [i for i in range(1000000)] return abash复制下载python -m memory_profiler script.py7. tracemallocpython复制下载import tracemalloc tracemalloc.start() # 执行代码 snapshot tracemalloc.take_snapshot() for stat in snapshot.statistics(lineno)[:10]: print(stat)8. 实战接口慢查询某接口 2 秒cProfile 发现 80% 时间在数据库查询。优化加索引。批量查询替代循环。缓存热点数据。耗时降到 200ms。9. 常见瓶颈循环中查询数据库。大量字符串拼接。未使用向量化。频繁创建对象。序列化开销。10. 优化手段算法优化。缓存。向量化NumPy、Pandas。异步 IO。多进程。Cython、Numba。11. 常见坑只测一次结果不稳定。忽略 IO 等待。优化后未回归测试。过早优化。12. 总结性能剖析要数据驱动。cProfile 找函数瓶颈line_profiler 找行瓶颈py-spy 看生产memory_profiler 查内存。

相关推荐

[极客大挑战 2019]EasySQL_CTF2
[极客大挑战 2019]EasySQL_CTF2

靶场环境:用户登陆 解题过程: 步骤一: 这是一个登录页,表单 GET 提交到 check.php,参数为 username 和 password。直接拿 admin/admin 登录会返回 "NO,Wrong username password!!&#… · 2026/9/25 20:27:21

【VLA工程】(6)—— 真机受控试用的排期与值班记录
【VLA工程】(6)—— 真机受控试用的排期与值班记录

【VLA工程】(6)—— 真机受控试用的排期与值班记录 文章目录【VLA工程】(6)—— 真机受控试用的排期与值班记录1. 受控试用与演示试用的差别2. 预约窗口的最小约定2.1 一周排期示例(桌面摆放)3. 三种角色与… · 2026/9/25 20:27:21

老程序员两小时用 Cursor + TaoToken 能做出什么?SpringBoot + Ant Design 实战复盘
老程序员两小时用 Cursor + TaoToken 能做出什么?SpringBoot + Ant Design 实战复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 20:27:21

一个月暴力攻破上百道世纪数学名题,学术界等来的却是恐慌与抗议
一个月暴力攻破上百道世纪数学名题,学术界等来的却是恐慌与抗议

一个月暴力攻破上百道世纪数学名题,学术界等来的却是恐慌与抗议 2026年8月28日,OpenAI悄悄开启了一轮新的内部模型训练。 谁也没料到,短短24天后,也就是9月21日,这家科技巨头在官网丢下一枚重磅炸弹:这个尚… · 2026/9/25 21:49:44

传奇996引擎LUA脚本开发指南:从环境搭建到高级定制实践
传奇996引擎LUA脚本开发指南:从环境搭建到高级定制实践

前言 目录 一、996引擎LUA开发环境搭建 1.1 开发工具推荐 1.2 目录结构 1.3 热重载机制 二、LUA脚本基础结构 2.1 一个简单的NPC脚本示例 2.2 常用API分类 三、高级定制实战 3.1 自定义活动系统 3.2 自定义BOSS技能 3.3 玩家数据持久化 四、性能优化技巧 4.1 避免… · 2026/9/25 21:49:13

数据库实验五完整实践:解压、建库、事务与避坑指南
数据库实验五完整实践:解压、建库、事务与避坑指南

简介:面向西北工业大学软件学院数据库课程学习者,这份压缩包完整收录实验五的提交材料与过程记录,围绕电子商务数据库设计任务,提供ER图、概念数据模型及配套文字说明,可帮助完成从需求分析到概念结构设计的闭环。压缩… · 2026/9/25 21:49:06

静态+动态分析闭环:Ghidra MCP 集成调试器的断点、单步与ASLR地址转换详解
静态+动态分析闭环:Ghidra MCP 集成调试器的断点、单步与ASLR地址转换详解

静态动态分析闭环:Ghidra MCP 集成调试器的断点、单步与ASLR地址转换详解 【免费下载链接】ghidra-mcp Ghidra MCP Server — 200 MCP tools for AI-powered reverse engineering. GUI plugin headless server, lazy tool loading, convention enforcement, batch … · 2026/9/25 21:48:35

260923-report
260923-report

260923-report 🧑🏻‍💻Author: Zenos 📝Overview: 本文档主要记录26年9月第三周学习内容以及后续学习计划。 文章目录260923-report[toc]一、研究背景1.1 微小目标检测1.1.1 微小目标检测面临的挑战1.1.2… · 2026/9/25 21:48:29

Windows 11非分页池泄漏排查实战:PoolMon+RAMMap精解
Windows 11非分页池泄漏排查实战:PoolMon+RAMMap精解

1. 这不是蓝屏前的幻觉:Windows 11里“吃内存”的幽灵真存在你有没有遇到过这种情况:刚重启完系统,任务管理器显示已用内存才2GB,可两小时后,它就悄无声息地涨到6GB、7GB,甚至8GB以上?打开的任务… · 2026/9/25 21:48:22

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码