python生成分析图_Pyflame 生成火焰图分析 Python 程序
Pyflame 生成火焰图分析 Python 程序
后台回复【入门资料】
送你十本Python电子书
文 | EarlGrey
推荐 | 编程派公众号
微信号:codingpy
Pyflame 是 Uber 官方开源的 Python 性能分析工具,可以用来生成火焰图。相较于内置的 profile 或 cProfile 模块,Pyflame 的开销更小,性能表现更好,而且可展示更多的性能数据。还有一个优点,就是不用修改你的Python代码,直接用命令行对当前的 Python 进程进行 profile。火焰图是一款性能调优工具,可以清晰的看出程序运行瓶颈在哪里。
安装 Pyflame
以 Ubuntu 系统为例,参照如下命令即可安装 Pyflame:
第一步:安装系统依赖# Install build dependencies on Debian or Ubuntu.sudo apt-get install autoconf automake autotools-dev g++ pkg-config python-dev python3-dev libtool make
第二步:编译git clone https://github.com/uber/pyflame.git
cd pyflame
./autogen.sh
./configure
make
安装好后可执行文件在 ./src/pyflame 中。
如果不想手动编译安装,可以选择网友预先构建的安装包:sudo apt-add-repository ppa:trevorjay/pyflamesudo apt-get updatesudo apt-get install pyflame
如果你使用的是 conda ,那么可以直接通过如下命令安装:conda install -c eklitzke pyflame
使用 Pyflame
Pyflame 提供了两种使用方式,一种是直接依附到(attach to)正在执行的进程,另一种则是追踪某个命令从头到尾的执行情况。
需要注意的是,Pyflame 无法直接生成火焰图,而是输出符合另一个专门工具 flamegraph 要求的数据。因此我们还要补充一个步骤:git clone https://github.com/brendangregg/FlameGraph.gitcd FlameGraph
依附到正在执行的进程
假设我们要分析 uwsgi 进程,首先确认进程的 pid:
查看要调试的进行ID:ps aux|grep uwsgi
root30130.00.725892426556? S7月200:26uwsgi /var/www/v7/uwsgi.ini
root30182.22.3788673286448?Sl7月20194:37uwsgi /var/www/v7/uwsgi.ini
root30192.92.3702777285000?Sl7月20258:56uwsgi
然后执行命令:# 生成进程 3013 的火焰图;默认 $PATH 路径中包含有 flamegraph.plpyflame -p 3013| flamegraph.pl > myprofile.svg
追踪命令的执行情况
我们也可以用 Pyflame 追踪某个命令从开始到结束的完整执行情况。例如追踪某个测试或者批量任务的运行情况。只需要在 pyflame 命令的最后,添加 -t 旗标即可实现, -t 后面的均被视为要运行的命令:pyflame -t py.test tests/
结语
Pyflame 生成的火焰图可以用 Chrome打开,能进行缩放和选择操作。综合上面的介绍,可以看出 Pyflame 的优势还是尤其明显的,性能更强,不用修改 Python 代码即可使用。
目前,Pyflame 在 Github 上有 2.6k 的标星。
回复下方「关键词」,获取优质资源
回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版
回复关键词「m」,立即获取Python精选优质文章合集
回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~
推荐阅读
python生成分析图_Pyflame 生成火焰图分析 Python 程序相关推荐
- ali arthas 火焰图_使用arthas 生成火焰图分析jvm
arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...
- mysql火焰图_【性能】如何使用perf和火焰图分析系统性能?
一.实验环境 二.实验案例分析 安装完成后,我们先在第一个终端,执行下面的命令运行案例,也就是一个最基本的 Nginx 应用: 运行 Nginx 服务并对外开放 80 端口 # docker run ...
- 性能瓶颈查找-火焰图分析
什么是火焰图 ⽕焰图仅⽤⼀张⼩图,就可以定量展示所有的性能瓶颈的全景图,⽽不论⽬标软件有多么复杂. 传统的性能分析⼯具通常会给⽤户展示⼤量的细节信息和数据, ⽽⽤户很难看到全貌,反⽽容易去优化那些并不 ...
- perf + 火焰图分析程序性能
From: https://www.cnblogs.com/happyliu/p/6142929.html 1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便 ...
- java 性能调优,使用 async-profiler + FlameGraph火焰图 分析cup消耗热点代码
参考文章 https://www.jianshu.com/p/9364028cca4e 目的:通过分析工具找到项目中占用cpu时间最长的代码片段,优化热点代码,达到优化内存的效果. 1.准备工具,从g ...
- 火焰图分析Flink反压
文章目录 现象 分析 猜想1 猜想2 猜想3 猜想4,确认代码变化 思考 大招(火焰图) On-cpu off-cpu 图 分析 火焰图 火焰图示例代码 生成火焰图 如何看 回到最开始的问题 总结 现 ...
- mysql火焰图_perf + 火焰图分析程序性能 - 刘志鹏的Blog - 博客园
1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...
- linux性能优化——利用perf火焰图分析内核调用
1.内核进程 我们知道,在 Linux 中,用户态进程的"祖先",都是 PID 号为 1 的 init 进程.比如,现在主流的 Linux 发行版中,init 都是 systemd ...
- mysql火焰图_perf + 火焰图分析程序性能
1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...
最新文章
- Intellij IDEA 创建Web项目并在Tomcat中部署运行
- STL6大标准库的关系和作用
- python万年历源代码_python万年历实现代码 含运行结果
- SpringCloud服务注册与发现Eureka
- 黑盒测试实践进度记录(五)
- MySQL服务器状态变量
- 基于分数阶的图像边缘细节检测
- 揭秘鲜为人知的酒店管理“黑洞”
- 【驱动安装及keil使用】win10 stm32 stlink驱动安装,检测不到芯片,下载不了程序
- mysql年龄最大_使用MySQL子查询选择年龄最大的所有用户?
- excel浏览器直接下载
- 【半佛仙人】他从不买水军,凭什么一年内做到B站500万粉丝?
- It seems like the kubelet isn‘t running or healthy
- Android Studio使用天天模拟器运行Android程序
- 利用JQuery实现广告动态滚动特效
- TravelFlan携小猴问问亮相ITB,看人工智能如何化解旅游痛点
- 使用ConfigFilter
- 网络攻击与防御——对局域网的攻击
- 重新开始学python,梦在远方路就在脚下 选择学习Python重新开始
- docker pull提示x509错误的对应方法
热门文章
- 白老大的身份鸿蒙之始,冒险王卫斯理白老大真实身份大揭秘 白老大是好人还是坏人?...
- 《黑客与画家》读后感——黑客与画家
- vue收缩面板_vuejs实现折叠面板展开收缩动画
- discuz论坛配置
- (笔记))oracle SCN 异常增长问题 以及 ORA-19706
- [UE5]物体沿指定路径(样条线)循环往复的移动
- 2020_WWW_The Structure of Social Influence in Recommender Networks
- 5000左右的linux笔记本推荐,5000左右,办公笔记本,有什么好的推荐
- 《一起来看流星雨》剧情简介
- 瀑布模型(waterfall model)一种线性的软件开发模型,文档驱动