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) 函数所在的文件名,函数的行号,函数名

最新文章

  1. 转:CentOS, 找不到dump命令:command not found
  2. RabbitMQ Lazy Queue 延迟加载
  3. 51单片机对无线模块nRF24L01简单的控制收发程序
  4. Silverlight 动画详解
  5. 阻塞队列BlockingQueue 学习
  6. CCF真题之ISBN号码
  7. jquery和js使用技巧
  8. bjui简单了解
  9. js监听浏览器关闭事件
  10. 日期类型的input元素设置默认值为当天
  11. Jmeter初步使用三--使用jmeter自身录制脚本
  12. C# Interface显式实现和隐式实现
  13. GDI泄露检测
  14. Java程序设计第五周学习总结
  15. netbeans 字体发虚
  16. 花点时间顺顺Git(上)
  17. Code::Blocks 导入Makefile工程
  18. Kibana --&gt; Getting Started --&gt;Building your own dashboard
  19. English-新概念学习
  20. iOS-UIImage变为NSData并进行压缩

热门文章

  1. 阿里技术专家十五问,真题面试刀刀见肉,快来和阿里面试官battle
  2. js一些注意事项
  3. day02初识判断和循环
  4. origin把点图和线图放在一起
  5. Promise 配合 axios 使用
  6. java中常见的六种线程池详解
  7. 没人比我更懂 HashMap :)
  8. 关于appium
  9. python开发基础(二)运算符以及数据类型之str(字符串)
  10. ubuntu下安装RabbitMQ