cProfile Python性能分析工具使用详解


Posted in Python onJuly 22, 2019

前言

Python自带了几个性能分析的模块:profile、cProfile和hotshot,使用方法基本都差不多,无非模块是纯Python还是用C写的。本文介绍cProfile。

例子

import time
def func1():
  sum = 0
  for i in range(1000000):
    sum += i
def func2():
  time.sleep(10)

func1()
func2()

运行

python -m cProfile del.py

运行结果

cProfile Python性能分析工具使用详解

结果分析

执行了6个函数,总共花费了10.138s,按着运行函数名字排序为结果输出。

运行脚本

python -m cProfile -o del.out del.py

这里以模块方式直接保存profile结果,可以进一步分析输出结果,运行

python -c "import pstats; p=pstats.Stats('del.out'); p.print_stats()"

结果(随机)

cProfile Python性能分析工具使用详解

可以设置排序方式,例如以花费时间多少排序

python -c "import pstats; p=pstats.Stats('del.out'); p.sort_stats('time').print_stats()"

cProfile Python性能分析工具使用详解

sort_stats支持以下参数:

calls, cumulative, file, line, module, name, nfl, pcalls, stdname, time

pstats模块还支持交互式

cProfile Python性能分析工具使用详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python分割和拼接字符串
Nov 01 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 Python
python构建自定义回调函数详解
Jun 20 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
Python内置函数 next的具体使用方法
Nov 24 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 Python
python scrapy简单模拟登录的代码分析
Jul 21 Python
python实现大文本文件分割
Jul 22 #Python
python plotly绘制直方图实例详解
Jul 22 #Python
python分割一个文本为多个文本的方法
Jul 22 #Python
在linux系统下安装python librtmp包的实现方法
Jul 22 #Python
django搭建项目配置环境和创建表过程详解
Jul 22 #Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 #Python
Django使用中间键实现csrf认证详解
Jul 22 #Python
You might like
php数据类型判断函数有哪些
2013/09/23 PHP
php实现文件上传基本验证
2020/03/04 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
JS修改css样式style浅谈
2013/05/06 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
2019/10/16 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
python中的字典操作及字典函数
2018/01/03 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
python代码xml转txt实例
2020/03/10 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
python interpolate插值实例
2020/07/06 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
GWT的应用有哪两种部署模式
2012/12/21 面试题
个人自我鉴定
2013/11/07 职场文书
婚前协议书怎么写
2014/04/15 职场文书
2014年导购员工作总结
2014/11/18 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android