【Python】测算代码运行时间
timeit模块
timeit模块定义了接受两个参数的Timer类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给Timer的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲,timeit构建起一个独立的虚拟环境,手工地执行建立语句,然后手工地编译和执行被计时语句。一旦有了
Timer对象,最简单的事就是调用timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数。Timer对象的另一个主要方法是repeat(), 它接受两个可选参数。 第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。 两个参数都是可选的,它们的默认值分别是 3 和 1000000。repeat()方法返回以秒记录的每个测试循环的耗时列表。Python 有一个方便的 min 函数可以把输入的列表返回成最小值,如:min(t.repeat(3, 1000000))可以在命令行使用
timeit模块来测试一个已存在的 Python 程序,而不需要修改代码。
举个例子:
# -*- coding: utf-8 -*-
#!/bin/env python
def test1():
n=0
for i in range(101):
n+=i
return n
def test2():
return sum(range(101))
def test3():
return sum(x for x in range(101))
if __name__=='__main__':
from timeit import Timer
t1=Timer("test1()","from __main__ import test1")
t2=Timer("test2()","from __main__ import test2")
t3=Timer("test3()","from __main__ import test3")
print t1.timeit(1000000)
print t2.timeit(1000000)
print t3.timeit(1000000)
print t1.repeat(3,1000000)
print t2.repeat(3,1000000)
print t3.repeat(3,1000000)
执行结果:
$ python timetest.py
7.99498915672
3.13702893257
10.6419789791[8.2126381397247314, 8.6312708854675293, 8.6079621315002441][3.3426268100738525, 3.3914170265197754, 3.5281510353088379][11.097387075424194, 10.941920042037964, 10.874698877334595]
我们可以简单的使用Python提供的魔术函数 %timeit,方便的统计
函数或语句的执行时间。
举个例子:
%timeit [x for x in strings if x.startswith('foo')]
此部分计算的是精确时间,当然对应的就有不精确时间的计算,如下,一般不推荐使用。
time模块###
此部分比较好理解,无非就是程序开始前获取一个时间,然后执行完成后再获取一个时间,然后作差即可得到程序执行的时间。上面也提到了,此方法得到的时间并不精确,并不推荐使用。
time.localtime(), time.time(), time.clock() 对比:
time.localtime(),localtime返回的是struct_time,包含年月日,显然没有必要,更重要的是localtime()的精度依赖于time()time.time(),time返回的是UTC时间(seconds since the 00:00:00 UTC on January 1)。在很多系统,包括windows下精度很差,win32下的精度只有1/18.2秒。不过在Unix/Linux系统下,time()的精度还是很高的。Python的标准库手册推荐在任何系统下都尽量使用
time.clock()。不过要注意是在win32系统下,这个函数返回的是真实时间(wall time),而在Unix/Linux下返回的是CPU时间。在win32下,这个函数的时间分辨率好于1微秒。
对应上面的内容,该部分也有一个魔术函数%time 一次执行一条语句,然后报告总体执行时间。
例子如下:
strings = ['foo', 'foobar', 'baz', 'qux', 'python', 'Guido Van Rossum'] * 100000
%time method = [x for x in strings if x.startswith('foo')]
注意:上述代码中的method=语句赋值不能省略,省略后即生成结果而不计算运行时间
上述代码在windows平台 Python2.7.11 的环境下测试。
【Python】测算代码运行时间的更多相关文章
- python测量代码运行时间方法
Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架. Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间. timeit 模块: ...
- C# 测算代码运行时间 Stopwatch
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); stop ...
- python计算代码运行时间的装饰器
import time def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, ...
- 计算Python代码运行时间长度方法
在代码中有时要计算某部分代码运行时间,便于分析. import time start = time.clock() run_function() end = time.clock() print st ...
- #python自动化测试#代码执行时间测量模块timeit
1. timeit模块timeit模块可以用来测试一小段python代码的执行速度 class timeit.Timer(stmt = 'pass',setup = 'pass',timer=< ...
- C#如何测试代码运行时间
1.System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 // 需要测试 ...
- Python一行代码
1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...
- python爬虫代码
原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...
- 使用console进行 性能测试 和 计算代码运行时间(转载)
本文转载自: 使用console进行 性能测试 和 计算代码运行时间
随机推荐
- PHP闭包(Closure)初探(转载 http://my.oschina.net/melonol/blog/126694?p=2#comments)
匿名函数 提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: ? 1 2 3 $func = function() { ...
- CCF 字符串匹配(find()函数的使用)
问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你 ...
- 【android】来电悬浮窗
先看下效果图 说下思路: 1:监听来电广播 2:根据来电号码,和本地数据库做匹配,有记录的,则提取出头像.名字.职位,生成悬浮窗 3:监听来电广播,如果当前行为是空闲的(没有任何通话行为),则删除掉悬 ...
- SSH整合不错的博客
https://blog.csdn.net/struggling_rong/article/details/63153833?locationNum=9&fps=1 好好看看看哦
- ls命令输出的文件颜色
ls的输出颜色不止3种,有以下几种,白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示其他文件 这是l ...
- 微服务—ELK分布式日志框架
在微服务架构下,微服务被拆分成多个微小的服务,每个微小的服务都部署在不同的服务器实例上,当我们定位问题,检索日志的时候需要依次登录每台服务器进行检索. 这样是不是感觉很繁琐和效率低下.所以我们还需要一 ...
- 如何安装python .whl包
1.最简单的办法是是python -mpip install *** 配置过环境变量也可以 pip install *** 但是由于墙的原因,很大概率失败.可以找到对应网站下载对应的.whl 2.下载 ...
- 20145322何志威 《Java程序设计》第8周学习总结
教材学习内容总结 第十四章 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),rewind(),flip(),compact()等高级操作. 想要取得channel的 ...
- Jackson 框架JSON、XML、List、Map直接相互转换
博客分类: json 参考:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html 在其基础上做了稍微调整 详情见附件 jacks ...
- jz2440使用openjtag+openocd+eclipse调试【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 eclipse版本:eclipse-cpp-l ...