python分析工具汇总

简介: python分析工具汇总

调用分析

py-spy

火焰图生成, top, dump性能,主要针对线程调用链路进行分析

https://github.com/benfred/py-spy

  • 火焰图
  • py-spy record -o profile.svg --pid 12345
  • py-spy record -o profile.svg -- python myprogram.py
  • top
  • py-spy top --pid 12345
  • py-spy top -- python myprogram.py
  • dump
  • py-spy dump --pid 12345

gdb

适用于线程调用追踪和代码运行点位分析,可以进行断点。


需要有对应版本的libpython

curl -o- http://file.fudata.work/base/python/Python-3.7.7.tgz| tar zxvf -source Python-3.7.7/Tools/gdb/libpython.py


cProfile

分析各个部分执行的频率和时间

https://docs.python.org/zh-cn/3/library/profile.html


werkzeug相关web应用可以直接使用中间件生成每个请求的分析文件, 结合snakeviz绘图

mkdir profiles
# ProfilerMiddleware适用于对整体的请求进行拦截
from werkzeug.middleware.profiler import ProfilerMiddleware
app.wsgi_app = ProfilerMiddleware(app.wsgi_app, profile_dir="profiles")

snakeviz

基于cProfile的dump文件,进行可视化分析

pyinstrument

调用栈分析

https://github.com/joerick/pyinstrument

line_profiler

逐行调用分析

https://github.com/pyutils/line_profiler


内存分析

Memray

功能非常完备了,支持live和离线bin分析模式。但是都需要让应用挂在memray进行下运行, 。如果有c等原生调用(比如我们目前的tensorflow),需要加上--native

https://github.com/bloomberg/memray

#memray run -o tfe_`date +'%s'`.bin --native -f -m fmpcbase.player --config /data/fmb-server/conf/project.cfg > /data/logs/tfe_server.log


高级用法

pyrasite + guppy3

pyrasite可以往运行中的python进程注入代码,结合guppy3可以对运行中的内存或其他信息进行分析。可操作性更大,但是需要自己编写pyload,门槛和成本较高

https://github.com/lmacken/pyrasite

https://github.com/zhuyifei1999/guppy3


分析建议

进程卡死无响应

  • 用py-spy dump出线程和火焰图

响应速度慢

  • 使用cprofile + snakeviz生成耗时和调用
  • web服务可以使用werkzeug的ProfilerMiddleware生成每个请求的分析文件,结合snakeviz绘图分析
  • 更细节的分析可以用pyinstrument+line_profiler

内存泄漏或者高占用

  • 使用memray dump内存占用提交开发

疑难杂症分析

  • gdb进行断点分析
  • Pyrasite + Payload进行热分析
目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费模式分析的深度学习模型
使用Python实现智能食品消费模式分析的深度学习模型
123 70
|
2月前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
1月前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品消费习惯分析的深度学习模型
使用Python实现智能食品消费习惯分析的深度学习模型
143 68
|
30天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费市场分析的深度学习模型
使用Python实现智能食品消费市场分析的深度学习模型
115 36
|
24天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
69 15
|
28天前
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
109 18
|
29天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
215 7
|
2月前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
67 8
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
201 4
|
2月前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。