Python的7种性能测试工具:timeit、profile、cProfile、line_profiler、memory_profiler、PyCharm图形化性能测试工具、objgraph
1.timeit:
>>> import timeit
>>> def fun():
for i in range():
a = i * i >>> timeit.timeit('fun()', 'from __main__ import fun', number=)
0.02922706632834235
>>>
timeit只输出被测试代码的总运行时间,单位为秒,没有详细的统计。
2.profile
profile:纯Python实现的性能测试模块,接口和cProfile一样。
>>> import profile
>>> def fun():
for i in range():
a = i * i >>> profile.run('fun()')
function calls in 0.031 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)
0.000 0.000 0.016 0.016 :(exec)
0.016 0.016 0.016 0.016 :(setprofile)
0.016 0.016 0.016 0.016 <pyshell#>:(fun)
0.000 0.000 0.016 0.016 <string>:(<module>)
0.000 0.000 0.031 0.031 profile:(fun())
0.000 0.000 profile:(profiler) >>>
ncall:函数运行次数
tottime: 函数的总的运行时间,减去函数中调用子函数的运行时间
第一个percall:percall = tottime / nclall
cumtime:函数及其所有子函数调整的运行时间,也就是函数开始调用到结束的时间。
第二个percall:percall = cumtime / nclall
3.cProfile
profile:c语言实现的性能测试模块,接口和profile一样。
>>> import cProfile
>>> def fun():
for i in range():
a = i * i >>> cProfile.run('fun()')
function calls in 0.024 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)
0.024 0.024 0.024 0.024 <pyshell#>:(fun)
0.000 0.000 0.024 0.024 <string>:(<module>)
0.000 0.000 0.024 0.024 {built-in method exec}
0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} >>>
ncalls、tottime、percall、cumtime含义同profile。
4.line_profiler
安装:
pip install line_profiler
安装之后kernprof.py会加到环境变量中。
line_profiler可以统计每行代码的执行次数和执行时间等,时间单位为微妙。
测试代码:
C:\Python34\test.py
import time @profile
def fun():
a =
b =
for i in range():
a = a + i * i for i in range():
b +=
time.sleep(0.1) return a + b fun()
使用:
1.在需要测试的函数加上@profile装饰,这里我们把测试代码写在C:\Python34\test.py文件上.
2.运行命令行:kernprof -l -v C:\Python34\test.py
输出结果如下:

- Total Time:测试代码的总运行时间
- Hits:表示每行代码运行的次数
- Time:每行代码运行的总时间
- Per Hits:每行代码运行一次的时间
- % Time:每行代码运行时间的百分比
5.memory_profiler:
memory_profiler工具可以统计每行代码占用的内存大小。
安装:
pip install memory_profiler
pip install psutil
测试代码:
同line_profiler。
使用:
1.在需要测试的函数加上@profile装饰
2.执行命令: python -m memory_profiler C:\Python34\test.py
输出如下:

6.PyCharm图形化性能测试工具:
PyCharm提供了图像化的性能分析工具,使用方法见利用PyCharm的Profile工具进行Python性能分析。
7.objgraph:
objgraph是一个实用模块,可以列出当前内存中存在的对象,可用于定位内存泄露。
objgraph需要安装:
pip install objgraph
Python的7种性能测试工具:timeit、profile、cProfile、line_profiler、memory_profiler、PyCharm图形化性能测试工具、objgraph的更多相关文章
- 常用MySQL图形化管理工具
MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...
- Python音视频开发:消除抖音短视频Logo的图形化工具实现
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...
- ROS(indigo) 用于机器人控制的图形化编程工具--code_it robot_blockly
0 简介: 编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行.图形化编程简单易学.8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现 ...
- 有评论就是我最大的动力~MySQL基础篇完结(存储引擎和图形化管理工具)
hi 今天登上来,发现竟然有了3个评论~~加油吧! 这周的计划其实远远没有达到,然后下周还有一大堆事情...那么...周末好好玩吧~ 今天试图完结MySQL的基础篇知识,小白变为大白? 1.MySQL ...
- 数据库--oracle图形化管理工具和新增自定义用户
oracle数据库图形化管理工具: 1 navicat工具很小,操作mySQL和SQLServer非常好用,但对于oracle体验性就有点差,要自己下载编码和替换oci文件.下面是解决的方法教程链接 ...
- 网络协议图形化分析工具EtherApe
网络协议图形化分析工具EtherApe 在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kal ...
- PostgreSQL 图形化客户端工具的使用技巧你都get了吗?
PostgreSQL 数据库作为目前功能较强大的开源数据库,得到了广泛应用.其中,TSA就用到了这款数据库来存储处理后的一些业务数据.虽然PostgreSQL自身提供了命令行交互式客户端工具psql, ...
- 怎么样putty打开图形化管理工具,在终端上
有时需要在putty这种图形终端开放的图形化管理工具将出现以下错误: [root@node2 ~]# Traceback (most recent call last): File "/us ...
- memcache图形化管理工具MemAdmin
给大家介绍一款 memcache图形化管理工具: MemAdmin 下载地址: http://www.junopen.com/memadmin/ wget http://www.junopen.com ...
随机推荐
- 【一】调通单机版的thrift-python版本
开发步骤说明 [任务1]调通单机版的thrift-python版本 [任务1]调通单机版的thrift-python版本 安装thrift 创建thrift模块文件并编译 开发python版的clie ...
- Linux3.5—视屏模块学习与分析
插入USB摄像头后,我看到了识别出的一些信息,在内核源码中搜到了相关信息: 搜索之后,在uvc_driver.c 帮助文档:linux-3.5/Documentation/video4linux/v4 ...
- Python 爬虫 (四)
requests: 练手 雪qiu网 import requests import json import re import pymysql url = 'https://xueqiu.com/v4 ...
- EnterpriseDB公司的 Postgres Solution Pack (一)
下载地址: http://www.enterprisedb.com/products-services-training/products/postgres-plus-solution-pack/do ...
- 基于套接字通信的简单练习(FTP)
本项目基于c/s架构开发(采用套接字通信,使用TCP协议) FTP-Socket"""__author:rianley cheng""" 功 ...
- 06003_redis在Linux上的安装
1.redis-3.0.0.tar.gz下载链接:redis-3.0.0.tar.gz下载 密码:wpbu 2.安装redis编译的c环境,yum install gcc-c++ : 3.将redis ...
- spring之HttpInvoker
一.HttpInvoker是常用的Java同构系统之间方法调用实现方案,是众多Spring项目中的一个子项目.顾名思义,它通过HTTP通信即可实现两个Java系统之间的远程方法调用,使得系统之间的通信 ...
- 在生产环境中部署asp.net core应用
设备:阿里云ECS云主机 操作系统:centos 7 操作步骤: 1 安装.net core sdk: # 添加dotnet product feed sudo rpm --import https: ...
- AIX7.1删除大批量文件(百万级、千万级)
假设/data/test目录下含有数百万上千万的文件需要删除,可以选择的方式如下: 1.如果文件名不包含空白符.引号等特殊字符,则可以使用如下命令: find /data/test -type f | ...
- CentOS 使用PostFix搭建邮件服务器
搭建环境: 关于PostFix是什么以及邮件服务器接受发送邮件流程网上有很多文章,这里就不再写了,这里只记录如何搭建邮件服务器,使用PostFix接受发送邮件 CentOS6.8 32位,postfi ...