Python标准库中提供了三种用来分析程序性能的模块,分别是cProfile, profile和hotshot,另外还有一个辅助模块stats。这些模块提供了对Python程序的确定性分析功能,同时也提供了相应的报表生成工具,方便用户快速地检查和分析结果。 

    这三个性能分析模块的介绍如下:

    cProfile:基于lsprof的用C语言实现的扩展应用,运行开销比较合理,适合分析运行时间较长的程序,推荐使用这个模块;

    profile:纯Python实现的性能分析模块,接口和cProfile一致。但在分析程序时增加了很大的运行开销。不过,如果你想扩展profiler的功能,可以通过继承这个模块实现;

    hotshot:一个试验性的C模块,减少了性能分析时的运行开销,但是需要更长的数据后处理的次数。目前这个模块不再被维护,有可能在新版本中被弃用。

2种方式使用:

cProfile.run('func(arg)','filename.txt')     # 调优函数,在脚本中使用
python -m cProfile myscript.py [-o filename.txt] # 调优脚本,在命令行使用 -o表示输出到文件

输出解释

         7 function calls in 0.088 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
1 0.003 0.003 0.088 0.088 <string>:1(<module>)
1 0.000 0.000 0.085 0.085 cProfile模块.py:14(f3)
1 0.010 0.010 0.010 0.010 cProfile模块.py:15(<listcomp>)
1 0.015 0.015 0.015 0.015 cProfile模块.py:17(<listcomp>)
1 0.000 0.000 0.088 0.088 {built-in method builtins.exec}
1 0.060 0.060 0.060 0.060 {built-in method builtins.sorted}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}

共有 7次函数调用,耗时0.088秒,原始调用为 0次,原始调用代表不包含递归调用。

ncalls 函数的被调用次数

tottime 函数总计运行时间,除去函数中调用的函数运行时间

percall 函数运行一次的平均时间,等于tottime/ncalls

cumtime 函数总计运行时间,含调用的函数运行时间

percall 函数运行一次的平均时间,等于cumtime/ncalls

filename:lineno(function) 函数所在的文件名,函数的行号,函数名

cProfile分析程序性能的更多相关文章

  1. python cProfile分析程序性能

    转自:http://xianglong.me/article/analysis-python-application-performance-using-cProfile/?utm_source=tu ...

  2. google perftools分析程序性能

    Google perftools 1.功能简介 它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目 ...

  3. perf + Flame Graph火焰图分析程序性能

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  4. [转]perf + 火焰图分析程序性能

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  5. perf + 火焰图分析程序性能

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  6. 使用strace+pstack利器分析程序性能

    引言 有时我们需要对程序进行优化.减少程序响应时间.除了一段段地对代码进行时间复杂度分析,我们还有更便捷的方法吗? 若能直接找到影响程序运行时间的函数调用,再有针对地对相关函数进行代码分析和优化,那相 ...

  7. 利用vs自带工具分析程序性能

    测试程序写好后可以通过VS2010分析菜单里选择启用性能向导 选择CPU采样后就选择需要分析的项目 测试项目选择完成后就可以运行分析,结束分析后VS2010会提供个详细报告文档 从分析结果来看GetC ...

  8. 【初体验】valgrind分析程序性能

    wget https://fossies.org/linux/misc/valgrind-3.15.0.tar.bz2 tar -jxvf valgrind-3.15.0.tar.bz2 cd val ...

  9. 如何使用strace+pstack利器分析程序性能

    http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html

随机推荐

  1. 一键开启win10全局utf8,编码问题说拜拜

    在windows下开发,开发环境的配置是一个很头大的问题,而编码问题是另一个令人头大的问题,常常出现的中文乱码令人痛不欲生,其原因就在于windows默认的编码并不是现在很普遍的utf8格式,本文就来 ...

  2. ES6里class杂乱随笔

    这是一篇乱七八糟的随笔.class是ES6新增的特性,用于解决JavaScript没有类的困惑. --杂谈 ES5及之前,类都是用函数来替代,包括实例. 如: 1 function Person(na ...

  3. instanceof语法解释

    syso+alt+/  快速输出语句的按键.   1.  instanceof java的一个二元操作,和==,>,<,同一类的用法,作用是判断  左边的对象是否是右边的类的实例 ,左边是 ...

  4. angular页面

    <!DOCTYPE html><!--[if lt IE 9]> <html lang="zh" xmlns:ng="http://angu ...

  5. JUC---02JUC辅助类

    一.java.util.concurrent.CountDownLatch------减少计数 1.执行原理: ①.CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这 ...

  6. 看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer 已提交此篇文章 final 是 Java 中的关键字 ...

  7. git 上传代码报错eslint --fix found some errors. Please fix them and try committing again.

    在提交时用下面这句 git commit --no-verify -m "提交时的注释"

  8. Android Studio的第一次经历

    第一个简单APP的制作是从xml开始的,通过在java新建一个empty  activity,并在layout里找到对应的xml文件进行编写.每编写一个xml就要事先新建 一个对应的empty  ac ...

  9. MySQL索引分析及使用

    一.索引介绍 1.1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此 ...

  10. python开发基础(二)运算符以及数据类型之str(字符串)

    # encoding: utf-8 # module builtins # from (built-in) # by generator 1.147 """ Built- ...