文档章节

Python 自带计时工具 timeit

catroll
 catroll
发布于 2013/04/19 11:23
字数 379
阅读 1826
收藏 8
码厩技术博客

Python 自带计时工具 timeit

 

Timer 类:

__init__(stmt="pass", setup="pass", timer=default_timer)

    stmt 是执行语句,setup 是导入执行语句环境

print_exc(file=None)

timeit(number=default_number)

    返回测试所用秒数,number 是每个测试中调用被计时语句的次数

repeat(repeat=default_repeat, number=default_number)

    返回测试所用秒数列表,repeat 是重复整个测试的次数,number 是每个测试中执行语句的次数

快捷方法:

timeit(stmt="pass", setup="pass", timer=default_timer, number=default_number)

    = Timer(stmt, setup, timer).timeit(number)

repeat(stmt="pass", setup="pass", timer=default_timer, repeat=default_repeat, number=default_number)

    = Timer(stmt, setup, timer).repeat(repeat, number)

 

default_timer 在 win32 下是 time.clock(),在 linux 下是 time.time()

default_number = 1000000

default_repeat = 3

 

实例:

import timeit

def func1(x):
    pow(x, 2)

def func2(x):
    return x * x

v = 10000

func1_test = 'func1(' + str(v) + ')'
func2_test = 'func2(' + str(v) + ')'

print timeit.timeit(func1_test, 'from __main__ import func1')
print timeit.timeit(func2_test, 'from __main__ import func2')

print timeit.repeat(func1_test, 'from __main__ import func1')
print timeit.repeat(func2_test, 'from __main__ import func2')

 

 

实例2:

#! /usr/bin/env python
# -*- coding: u8 -*-
import random
import timeit

def randDiff( k,n ):
    '产生k个不相等的从1到n的随机数'
    p = []
    y1 = [random.randrange(1,n+1) for i in range(n)]
    y2 = []
    y2.extend(y1)
    y1.sort()
    for j in range(k):
        temp1 = y1[j]
        temp2 = y2.index(temp1)
        p.append(temp2 + 1)
        y2[temp2] = -1
    return p

def randDif(k,n):
    '新函数,生成k个1到n之间不相等的随机数'
    if k>n:
        return []
    a = range(1,n+1)
    random.shuffle(a)
    return a[:k]

# 关于上面两个函数:http://www.oschina.net/question/153568_23095?sort=time

if __name__=='__main__':
    print timeit.repeat("randDiff(3, 10)", "from __main__ import randDiff", timeit.default_timer, 3, 10000)
    print timeit.repeat("randDif(3, 10)", "from __main__ import randDif", timeit.default_timer, 3, 10000)

 

© 著作权归作者所有

共有 人打赏支持
catroll
粉丝 4
博文 8
码字总数 4451
作品 0
武汉
后端工程师
Python丨Python 性能分析大全

虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求。但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚至...

太阳代理
2017/11/07
0
0
设计模式之:理解 Python 中的装饰器

1、问题 文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say(): return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出......

大数据之路
2013/07/22
0
0
Python装饰器与面向切面编程

今天来讨论一下装饰器。装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以...

张旭0512
2014/03/06
0
0
Python装饰器实例(2):面向切面编程

装饰器入门 1.1. 需求是怎么来的? 装饰器的定义很是抽象,我们来看一个小例子。 这是一个很无聊的函数没错。但是突然有一个更无聊的人,我们称呼他为B君,说我想看看执行这个函数用了多长时...

cbliu
2014/02/10
0
0
Python装饰器与面向切面编程

新年好~ 那么,很久没有更新了,其实想想也没多少可以写的,因为Python的文档似乎很全面的说……能做的差不多只有翻译和整理了,英文过关的朋友不妨直接去doc.python.org这里查看相关资料 :...

xxjbs001
2015/03/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bash工作管理详解

Bash工作管理 Bash的工作是对具体任务的一个抽象表述,更确切的说是对管道的应用上的表述。Bash中的工作在形式上表现为一组相关进程或单个进程。工作进程组分为前台和后台,前台进程会对键盘...

小陶小陶
13分钟前
1
0
Qt那些事0.0.1

LIBS += -L$$PWD/lib/ -lStv1QMAKE_POST_LINK += $$QMAKE_COPY $$replace(PWD,"/","\\")\lib\Stv1.dll $$replace(OUT_PWD,"/","\\")\debug\Stv1.dll pro文件里,写起来按理说应该是轻松地......

Ev4n
23分钟前
1
0
如何正确的使用动态VPS(Linux)自动更换IP

背景 现在越来越多的人开始玩网赚项目,蚂蚁再小也是肉,薅羊毛的羊毛党越来越多,一些网赚项目也越来越受欢迎,但是一般的网赚项目都是要求真实用户的,所以要想获得大量的真实ip,一种动态...

bengozhong
29分钟前
1
0
分布式任务系统(LTS)部署学习使用

章节速览 背景介绍 环境部署 LTS架构原理&代码样例 个人心得经验 一、背景介绍 很多公司应该都会遇到job服务部署执行时:定时、并发、分布式这些问题。有的人就是只跑一个job服务,这样会简单...

硅步积千里
39分钟前
28
0
kotlin使用spring data redis(一)

1.引包 #忘记引用这个包的下场就是#nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfigcompile 'org.apache.commons:commons-p......

weidedong
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部