整理自这里这里

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】测算代码运行时间的更多相关文章

  1. python测量代码运行时间方法

    Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架. Python3.2具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间. timeit 模块: ...

  2. C# 测算代码运行时间 Stopwatch

    System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); stop ...

  3. python计算代码运行时间的装饰器

    import time def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, ...

  4. 计算Python代码运行时间长度方法

    在代码中有时要计算某部分代码运行时间,便于分析. import time start = time.clock() run_function() end = time.clock() print st ...

  5. #python自动化测试#代码执行时间测量模块timeit

    1. timeit模块timeit模块可以用来测试一小段python代码的执行速度 class timeit.Timer(stmt = 'pass',setup = 'pass',timer=< ...

  6. C#如何测试代码运行时间

    1.System.Diagnostics.Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 // 需要测试 ...

  7. Python一行代码

    1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...

  8. python爬虫代码

    原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...

  9. 使用console进行 性能测试 和 计算代码运行时间(转载)

    本文转载自: 使用console进行 性能测试 和 计算代码运行时间

随机推荐

  1. 成员函数查找[条款24]---《C++必知必会》

    调用一个成员函数,涉及三个步骤:第一步,编译器查找函数的名字:第二部,从可用候选者中选择最佳匹配函数:第三步,检查是否具有访问该函数的权限. #include<iostream> usin ...

  2. LINQ查询中的IEnumerable<T>和IQueryable<T>

    LINQ查询方法一共提供了两种扩展方法,在System.Linq命名空间下,有两个静态类:Enumerable类,它针对继承了IEnumerable<T>接口的集合进行扩展:Queryab ...

  3. maven tomcat7-maven-plugin配置及背景

    背景: 在研发阶段,想让一个服务通过tomcat启动起来有很多的方法,常用的idea都有这样的支持,那么如果我们没有tomcat,能不能让服务通过tomcat启动起来呢?maven就提供了这样的支持. ...

  4. 【android】使用RecyclerView和CardView,实现知乎日报精致布局

    完整代码,请参考我的博客园客户端,git地址:http://git.oschina.net/yso/CNBlogs 在写博客园客户端的时候,突然想到,弄个知乎日报风格的简单清爽多好!不需要那么多繁杂的 ...

  5. JMS--消息头

    一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload).对于StreamMessage和MapMessage,消息本身就有特定的结构,而对于TextM ...

  6. CentOS下yum安装FFmpeg

    一.yum安装FFmpeg 1.    最偷懒的方式就是yum安装了,自动解决依赖.不过CentOS系统默认无FFmpeg源,企业版 Linux 附加软件包EPEL源也不包含,需要手动添加yum源配置 ...

  7. saltstack常用模块

    介绍一些常用的saltstack模块,更多模块参考官方网站 1.跟安装包相关的模块:salt.states.pkg salt.states.pkg.downloaded(name, version=N ...

  8. ELK之elasticsearch5.6的安装和head插件的安装

    这里选择的elasticsearch为5.6的新版本,根据官方文档有几种暗装方式: https://www.elastic.co/guide/en/elasticsearch/reference/cu ...

  9. 20145310 《Java程序设计》第8周学习总结

    20145310 <Java程序设计>第8周学习总结 教材学习内容总结 本周主要进行第十四章和第十五章的学习. 第十四章 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供 ...

  10. 20145312 《Java程序设计》第九周学习总结

    20145312 <Java程序设计>第九周学习总结 学习笔记 Chapter 16整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 SUN公司为了简化.统一对数据库的操作, ...