python 利用cProfile进行性能分析

发布于:2023-01-12 ⋅ 阅读:(360) ⋅ 点赞:(0)

cProfile作用:       

        主要是用来显示在一次执行过程中,每个函数所需要花费的时间


        cProfile是Python自带的性能分析模块,所以直接import导入即可,安装也可参照python其他模块的安装方法。

cProfile用法:

1.在py文件的函数入口main下操作,如:

 建议将性能分析结果存入txt类型文件内,亲测执行可用,别的类型没有试过,但应该是一样的道理。

2.在终端下执行如下命令:

python -m cProfile -o 结果保存路径 待测试代码路径
python -m cProfile -s cumulative 待测试代码路径

终端下执行是灵活的,结果可保存也可以不保存,建议保存的原因是终端下对结果的显示行是有限制的,但总归基础命令是“python -m cProfile ...”


 cProfile结果解读:

1.首先将txt文件内的内容读出来,读取方式如下:

import pstats
p=pstats.Stats('cost_result.txt')
p.sort_stats('time').print_stats()   #按照时间排序显示其内容,也可按照其他列显示
p.print_stats()    #不按时间排序,直接显示内容

内容如下:

 

会给出一个代码执行消耗的总时间,还有具体到每个包每个函数的总时间

2.cProfile参数含义:

ncalls:表示函数调用的次数;

tottime:表示指定函数的总的运行时间,除掉函数中调用子函数的运行时间;

percall:(第一个percall)等于 tottime/ncalls;

cumtime:表示该函数及其所有子函数的调用运行的时间,即函数开始调用到返回的时间; percall:(第二个percall)即函数运行一次的平均时间,等于 cumtime/ncalls; filename:lineno(function):每个函数调用的具体信息;


具体可参考:Python 分析器