Python timeit 中的计时器的两种使用方法

一、直接使用timeit(),repeat()

1.timeit
# 代码结构:
# from timeit import timeit     模块引入
# time1 = timeit("function", "from __main__ import function", number=10000)
# print(time1)
# 注意:
# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
# 如果number不设定,默认为10000次(对这些行代码测试一万次——>设这个行为为过程A)

2.repeat
# 代码结构:
# from timeit import repeat     模块引入
# t = repeat('func()', 'from __main__ import func', number=100, repeat=5)
# print(min(t))
# 注意:
# repeat(函数名_字符串,运行环境_字符串,number=运行次数,repeat=重复运行次数)
# repeat和timeit用法相似,多了一个repeat参数,表示重复测试的次数(可以不写,默认值为3.)
# 如果repeat = 5 ,表示对过程A重复的5次
# repeat的返回值为一个时间的列表(因此最后打印出时间的时候可以用min(t),得出这个时间列表的
# 最小值)。

------------------------------------------------------------------------------------------------------------------------------------下面举一个简单的应用例子

step 1

下列代码定义了六种生成列表的函数,我们分别用timeit(),和repeat()来测试

# 生成列表的五种方法

def t1():
    li1 = []
    for i in range(10000):
        li1 += [i]


def t2():
    li2 = []
    for i in range(10000):
        li2 = li2.append(i)


def t3():
    li3 = []
    for i in range(10000):
        li3 = li3.extend([i])


def t4():
    li4 = [i for i in range(10000)]


def t5():
    li5 = list(range(10000))


def t6():
    li6 = []
    for i in range(10000):
        li6 = li6.insert(0, i)

step 2    (1)使用timeit

from timeit import timeit

timer1 = timeit(stmt="t1", setup="from __main__ import t1", number=1000)     
# stmt=和setup=是可以省略不写的,但是如果有运行次数必须写number=,如果没有标明运行次数则默认为10000次
print('1.使用列表相加的方法生成新列表:', timer1, " seconds")

timer2 = timeit("t2", "from __main__ import t2", number=1000)
print('2使用append()内置函数生成新列表:', timer2, " seconds")

timer3 = timeit("t3", "from __main__ import t3", number=1000)
print('3.使用extend()内置函数生成新列表:', timer3, " seconds")

timer4 = timeit("t4", "from __main__ import t4", number=1000)
print('4.使用[i for i in range(1000)]生成新列表:', timer4, " seconds")

tmier5 = timeit("t5", "from __main__ import t5", number=1000)
print('5.使用list(range(10000))的方法生成新列表:', tmier5, " seconds")

timr6 = timeit("t6", "from __main__ import t6", number=1000)
print('6.使用insert()方法:', tmier5, " seconds")

step2         (2)使用repeat

from timeit import repeat

timer1 = repeat(stmt="t1", setup="from __main__ import t1", number=1000, repeat=3)     
# stmt=和setup=是可以省略不写的,但是如果有运行次数必须写number=和repeat=,如果没有标明运行次数则默认为10000次,repeat为3次
# 由于repeat返回的是一个时间的列表,所以print的时候,使用min(),来取时间列表里的最小值
print('1.使用列表相加的方法生成新列表:', min(timer1), " seconds")

timer2 = repeat("t2", "from __main__ import t2", number=1000)
print('2使用append()内置函数生成新列表:', min(timer2), " seconds")

timer3 = repeat("t3", "from __main__ import t3", number=1000)
print('3.使用extend()内置函数生成新列表:', min(timer3), " seconds")

timer4 = repeat("t4", "from __main__ import t4", number=1000)
print('4.使用[i for i in range(1000)]生成新列表:', min(timer4), " seconds")

tmier5 = repeat("t5", "from __main__ import t5", number=1000)
print('5.使用list(range(10000))的方法生成新列表:', min(tmier5), " seconds")

timr6 = repeat("t6", "from __main__ import t6", number=1000)
print('6.使用insert()方法:', min(tmier5), " seconds")

step 3 

(1)的运行结果

(2)的运行结果

二、先生成Timer(),再调用timeit()和repeat()

(1)调用timeit代码演示示例

Timer.timeit(number)  返回的是运行number次所需要的时间

from timeit import Timer

timer1 = Timer("t1", "from __main__ import t1")
print('1.使用列表相加的方法生成新列表:', timer1.timeit(1000), " seconds")

timer2 = Timer("t2", "from __main__ import t2")
print('2使用append()内置函数生成新列表:', timer2.timeit(1000), " seconds")

timer3 = Timer("t3", "from __main__ import t3")
print('3.使用extend()内置函数生成新列表:', timer3.timeit(1000), " seconds")

timer4 = Timer("t4", "from __main__ import t4")
print('4.使用[i for i in range(1000)]生成新列表:', timer4.timeit(1000), " seconds")

tmier5 = Timer("t5", "from __main__ import t5")
print('5.使用list(range(10000))的方法生成新列表:', tmier5.timeit(1000), " seconds")

timr6 = Timer("t6", "from __main__ import t6")
print('6.使用insert()方法:', tmier5.timeit(1000), " seconds")

(1)运行结果

 (2)调用repeat()代码演示示例

Timer.repeat(number,repeat)   其返回的是一个时间列表     

min(Timer.repeat(number,repeat))   这样即可以取时间列表内的最小值

from timeit import repeat
from timeit import Timer

timer1 = Timer("t1", "from __main__ import t1")
print('1.使用列表相加的方法生成新列表:', min(timer1.repeat(1000, 3)), " seconds")

timer2 = Timer("t2", "from __main__ import t2")
print('2使用append()内置函数生成新列表:', min(timer2.repeat(1000, 3)), " seconds")

timer3 = Timer("t3", "from __main__ import t3")
print('3.使用extend()内置函数生成新列表:', min(timer3.repeat(1000, 3)), " seconds")

timer4 = Timer("t4", "from __main__ import t4")
print('4.使用[i for i in range(1000)]生成新列表:', min(timer4.repeat(1000, 3)), " seconds")

tmier5 = Timer("t5", "from __main__ import t5")
print('5.使用list(range(10000))的方法生成新列表:', min(tmier5.repeat(1000, 3)), " seconds")

timr6 = Timer("t6", "from __main__ import t6")
print('6.使用insert()方法:', min(tmier5.repeat(1000, 3)), " seconds")

(2) 运行结果

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值