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 程序相关推荐

  1. ali arthas 火焰图_使用arthas 生成火焰图分析jvm

    arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...

  2. mysql火焰图_【性能】如何使用perf和火焰图分析系统性能?

    一.实验环境 二.实验案例分析 安装完成后,我们先在第一个终端,执行下面的命令运行案例,也就是一个最基本的 Nginx 应用: 运行 Nginx 服务并对外开放 80 端口 # docker run ...

  3. 性能瓶颈查找-火焰图分析

    什么是火焰图 ⽕焰图仅⽤⼀张⼩图,就可以定量展示所有的性能瓶颈的全景图,⽽不论⽬标软件有多么复杂. 传统的性能分析⼯具通常会给⽤户展示⼤量的细节信息和数据, ⽽⽤户很难看到全貌,反⽽容易去优化那些并不 ...

  4. perf + 火焰图分析程序性能

    From: https://www.cnblogs.com/happyliu/p/6142929.html 1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便 ...

  5. java 性能调优,使用 async-profiler + FlameGraph火焰图 分析cup消耗热点代码

    参考文章 https://www.jianshu.com/p/9364028cca4e 目的:通过分析工具找到项目中占用cpu时间最长的代码片段,优化热点代码,达到优化内存的效果. 1.准备工具,从g ...

  6. 火焰图分析Flink反压

    文章目录 现象 分析 猜想1 猜想2 猜想3 猜想4,确认代码变化 思考 大招(火焰图) On-cpu off-cpu 图 分析 火焰图 火焰图示例代码 生成火焰图 如何看 回到最开始的问题 总结 现 ...

  7. mysql火焰图_perf + 火焰图分析程序性能 - 刘志鹏的Blog - 博客园

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  8. linux性能优化——利用perf火焰图分析内核调用

    1.内核进程 我们知道,在 Linux 中,用户态进程的"祖先",都是 PID 号为 1 的 init 进程.比如,现在主流的 Linux 发行版中,init 都是 systemd ...

  9. mysql火焰图_perf + 火焰图分析程序性能

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

最新文章

  1. Intellij IDEA 创建Web项目并在Tomcat中部署运行
  2. STL6大标准库的关系和作用
  3. python万年历源代码_python万年历实现代码 含运行结果
  4. SpringCloud服务注册与发现Eureka
  5. 黑盒测试实践进度记录(五)
  6. MySQL服务器状态变量
  7. 基于分数阶的图像边缘细节检测
  8. 揭秘鲜为人知的酒店管理“黑洞”
  9. 【驱动安装及keil使用】win10 stm32 stlink驱动安装,检测不到芯片,下载不了程序
  10. mysql年龄最大_使用MySQL子查询选择年龄最大的所有用户?
  11. excel浏览器直接下载
  12. 【半佛仙人】他从不买水军,凭什么一年内做到B站500万粉丝?
  13. It seems like the kubelet isn‘t running or healthy
  14. Android Studio使用天天模拟器运行Android程序
  15. 利用JQuery实现广告动态滚动特效
  16. TravelFlan携小猴问问亮相ITB,看人工智能如何化解旅游痛点
  17. 使用ConfigFilter
  18. 网络攻击与防御——对局域网的攻击
  19. 重新开始学python,梦在远方路就在脚下 选择学习Python重新开始
  20. docker pull提示x509错误的对应方法

热门文章

  1. 白老大的身份鸿蒙之始,冒险王卫斯理白老大真实身份大揭秘 白老大是好人还是坏人?...
  2. 《黑客与画家》读后感——黑客与画家
  3. vue收缩面板_vuejs实现折叠面板展开收缩动画
  4. discuz论坛配置
  5. (笔记))oracle SCN 异常增长问题 以及 ORA-19706
  6. [UE5]物体沿指定路径(样条线)循环往复的移动
  7. 2020_WWW_The Structure of Social Influence in Recommender Networks
  8. 5000左右的linux笔记本推荐,5000左右,办公笔记本,有什么好的推荐
  9. 《一起来看流星雨》剧情简介
  10. 瀑布模型(waterfall model)一种线性的软件开发模型,文档驱动