0


Python 确定性性能分析工具cProfile的使用 pstats表格化分析 snakeviz图形化分析

这篇博客总结的很好

  1. 生成原始性能分析文件

方式1 在脚本文件中添加如下代码
假设我们要进行分析的程序为demo.py

import cProfile
import re
cProfile.run('re.compile("demo,py")',filename='result.out')

方式2 命令行中运行

python3 -m cProfile -o result.out  demo.py

输出结果会保存在当前目录下 ,生成或覆盖一个result.out文件

  1. 表格化分析原始文件:用 pstats 表格化分析由 cProfile 生成的原始文件
import pstats

p = pstats.Stats("/home/code/result.out")# 按照运行时间和函数名进行排序
p.strip_dirs().sort_stats("cumulative", "name").print_stats(0.5)#参数为小数 表示前百分之几的函数信息
p.strip_dirs().sort_stats("cumulative", "name").print_stats(30)#参数为整数 打印前30行
  1. 使用snakeviz图形化分析原始文件
snakeviz result.out

如果出现command not found: snakeviz报错
使用

python3 -m snakeviz result.out

来自解决方法:More recent PRs have added the ability to call SnakeViz via

python -m snakeviz name_of_profile

which won’t depend on the snakeviz executable being available.

浏览器中图形化分析效果:
在这里插入图片描述
终端里表格化分析的效果
第一行2663939为总的函数调用次数
第二行显示采用的排序方式
第三行显示当前选择只列出前30条
在这里插入图片描述

如果在终端中想要结束

snakeviz进程——ctrl+c

*性能指标:

Cumulative time

:程序运行总时长

ncalls

函数调用次数

tottime

在指定函数中消耗的总时间(不包括调用子函数的时间)

percall

=

tottime / ncalls

计量函数调用平均消耗时间

cumtime

指定的函数及其所有子函数(从调用到退出)消耗的累积时间。

percall

=

cumtime/primitive calls

计量函数运行一次的平均累计时间*

标签: python

本文转载自: https://blog.csdn.net/weixin_56336619/article/details/115862343
版权归原作者 weixin_56336619 所有, 如有侵权,请联系我们删除。

“Python 确定性性能分析工具cProfile的使用 pstats表格化分析 snakeviz图形化分析”的评论:

还没有评论