cProfile性能统计

步骤

  1. 导入对应功能包

    import cProfile,pstats
    
  2. 将性能检查代码嵌入指定区域

    #===========example========
    
    pr = cProfile.Profile()
    pr.enable()
    #---------enable和disable中间的代码片段会进行性能检测
    o_seq_view = CSequenceView(ctx)
    pr.disable()
    ps = pstats.Stats(pr)
    ps.sort_stats("cumulative")#将收集到的数据按"累计时间"从大到小排序。
    ps.print_stats(50)#仅打印排序后的top50个-输出至控制台
    
  3. 输出信息中的关键列属性含义

    ncalls : 总调用次数
    cumtime: 累积时间
    percall(第二个):函数运行一次的平均时间。(包含了所有子函数运行时间) 
    

参考

The following are the valid string and SortKey:

SortKey代表可填入sort_stats方法中的排序枚举量

有效字符串参数 有效枚举参数 含义
'calls' SortKey.CALLS 调用次数
'cumulative' SortKey.CUMULATIVE 累积时间
'cumtime' N/A 累积时间
'file' N/A 文件名
'filename' SortKey.FILENAME 文件名
'module' N/A 文件名
'ncalls' N/A 调用次数
'pcalls' SortKey.PCALLS 原始调用计数
'line' SortKey.LINE 行号
'name' SortKey.NAME 函数名称
'nfl' SortKey.NFL 名称/文件/行
'stdname' SortKey.STDNAME 标准名称
'time' SortKey.TIME 内部时间
'tottime' N/A 内部时间The following are the valid string and SortKey:

可视化(需要结合文件输出操作)

#输出到文件中-可借助Stats类中的dump_stats方法
#==========example=========
pr = cProfile.Profile()
pr.enable()
#---your -logic--
pr.disable()
ps = pstats.Stats(pr)
ps.sort_stats("cumulative")
ps.print_stats(15)
ps.dump_stats("test.out")

还需要安装对应的可视化工具snakeviz,采用python的pip命令进行安装即可。

如何生成?

找到test.out的所在文件夹,执行命令snakeviz test.out即可。

你可能感兴趣的:(cProfile性能统计)