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进行热分析
目录
相关文章
|
12天前
|
存储 安全 数据安全/隐私保护
打造安全防线!Python AES&RSA加密工具,黑客绕道走的秘籍
【9月更文挑战第9天】随着数字化时代的到来,信息安全问题日益凸显。本文将介绍如何使用Python结合AES与RSA两种加密算法,构建强大的加密工具。AES以其高效性和强安全性著称,适用于大量数据的快速加密;RSA作为非对称加密算法,在加密小量数据及实现数字签名方面表现卓越。通过整合两者,可以构建既安全又灵活的加密系统。首先,需要安装pycryptodome库。接着,实现AES加密与解密功能,最后利用RSA加密AES密钥,确保其安全传输。这种设计不仅提高了数据传输效率,还增强了密钥交换的安全性,为敏感数据提供坚实保护。
145 43
|
13天前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
31 1
|
18天前
|
Python
Python的编辑工具-Jupyter notebook实战案例
这篇博客介绍了Jupyter Notebook的安装和使用方法,包括如何在本地安装Jupyter、启动和使用Jupyter Notebook进行编程、文档编写和数据分析,以及如何执行和管理代码单元(Cell)的快捷键操作。
27 4
Python的编辑工具-Jupyter notebook实战案例
|
2天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
11 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
5天前
|
机器学习/深度学习 算法 开发工具
Python Web开发工具
Python Web开发工具
14 3
|
6天前
|
机器学习/深度学习 数据可视化 搜索推荐
使用Python实现深度学习模型:智能睡眠监测与分析
使用Python实现深度学习模型:智能睡眠监测与分析
27 2
|
7天前
|
机器学习/深度学习 搜索推荐 TensorFlow
使用Python实现深度学习模型:智能饮食建议与营养分析
使用Python实现深度学习模型:智能饮食建议与营养分析
32 3
|
8天前
|
机器学习/深度学习 搜索推荐 算法框架/工具
使用Python实现深度学习模型:智能运动表现分析
使用Python实现深度学习模型:智能运动表现分析
31 1
|
12天前
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【9月更文挑战第9天】你是否曾遇到多个Python程序像孤岛般无法通信,导致数据孤立、任务难协同的问题?掌握进程间通信(IPC)技术,可助你打破这一僵局。IPC是不同进程间传递数据或信号的机制,在Python中常用的方法有管道、消息队列、共享内存及套接字等。其中,管道适用于父子或兄弟进程间简单数据传递;套接字则不仅限于本地,还能在网络间实现复杂的数据交换。通过学习IPC,你将能设计更健壮灵活的系统架构,成为真正的编程高手。
15 3
|
18天前
|
安全 数据挖掘 Python
Python的打包工具(setup.py)实战篇
关于如何使用Python的setup.py工具打包Python项目的实战教程。
16 0
Python的打包工具(setup.py)实战篇