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的更多相关文章

  1. 常用MySQL图形化管理工具

    MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,这里我介绍几个经常使用的MySQL图形化管理工具,供大家参考. MySQL是一个非常流行的小型关系型数据 ...

  2. Python音视频开发:消除抖音短视频Logo的图形化工具实现

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...

  3. ROS(indigo) 用于机器人控制的图形化编程工具--code_it robot_blockly

    0 简介: 编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行.图形化编程简单易学.8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现 ...

  4. 有评论就是我最大的动力~MySQL基础篇完结(存储引擎和图形化管理工具)

    hi 今天登上来,发现竟然有了3个评论~~加油吧! 这周的计划其实远远没有达到,然后下周还有一大堆事情...那么...周末好好玩吧~ 今天试图完结MySQL的基础篇知识,小白变为大白? 1.MySQL ...

  5. 数据库--oracle图形化管理工具和新增自定义用户

    oracle数据库图形化管理工具: 1 navicat工具很小,操作mySQL和SQLServer非常好用,但对于oracle体验性就有点差,要自己下载编码和替换oci文件.下面是解决的方法教程链接 ...

  6. 网络协议图形化分析工具EtherApe

    网络协议图形化分析工具EtherApe   在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kal ...

  7. PostgreSQL 图形化客户端工具的使用技巧你都get了吗?

    PostgreSQL 数据库作为目前功能较强大的开源数据库,得到了广泛应用.其中,TSA就用到了这款数据库来存储处理后的一些业务数据.虽然PostgreSQL自身提供了命令行交互式客户端工具psql, ...

  8. 怎么样putty打开图形化管理工具,在终端上

    有时需要在putty这种图形终端开放的图形化管理工具将出现以下错误: [root@node2 ~]# Traceback (most recent call last): File "/us ...

  9. memcache图形化管理工具MemAdmin

    给大家介绍一款 memcache图形化管理工具: MemAdmin 下载地址: http://www.junopen.com/memadmin/ wget http://www.junopen.com ...

随机推荐

  1. spark sql cache时发现的空字符串问题

    博客园首发,转帖请注明地址:https://www.cnblogs.com/tzxxh/p/10267202.html 图一 图1未做cache,直接过滤expression列的 null 和空字符串 ...

  2. 动态链接库函数内的静态变量,奇妙的UNIQUE Bind

    title: 动态链接库函数内的静态变量,奇妙的UNIQUE Bind date: 2018-09-28 09:28:22 tags: --- 介绍 模板函数和内敛函数中的静态变量,在跨so中的表现, ...

  3. python学习笔记:第16天 面向对象02--对象中的成员

    目录 ⼀.类的成员介绍: 二.类的成员-变量 三.类的成员-方法 四.类的成员-属性 五.私有属性 ⼀.类的成员介绍: ⾸先, 什么是类的成员. 很简单. 我么能在类中写什么? 写的内容就是成员. 到 ...

  4. bit_length

    #当十进制用二进制表示时,最少使用的位数 v=2data=v.bit_length()print(data)

  5. python类的多态

    1. 什么是多态     多态指的是同一种/类事物的不同形态   2. 为何要用多态     多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象     多态性的精髓:统一   ...

  6. HyperLedger Fabric 1.4 多机多节点部署(10.3)

    多机多节点指在多台电脑上部署多个组织和节点,本案例部署一个排序(orderer)服务,两个组织(org1,org2)和四个节点(peer),每个组织包括两个节点,需要五台计算机,计算机配置如下: 多机 ...

  7. Mybatis中Mapper的Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?

    还有很多其他的标签,<resultMap>.<parameterMap>.<sql>.<include>.<selectKey>,加上动态s ...

  8. vue.js中引入其他文件export的方法:

    import {GetPosition} from '../../lib/utils'  //找到 该方法的文件路径,然后 用{}拿到 该方法 var position =GetPosition(); ...

  9. Unknown host 'services.gradle.org' 解决方法

    报错如下: Unknown host 'services.gradle.org'. You may need to adjust the proxy settings in Gradle. Learn ...

  10. generator-ivweb 基于react-redux的多页脚手架

    背景 每个公司甚至每个项目组,在开发新项目的时候都会有一些自己特色的东西,比如公共组件,ajax请求拦截处理,内部积累的一些业务逻辑等等,如果没有自己的脚手架,那么拷贝代码成为常态,每个项目的结构,甚 ...