一、直接使用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) 运行结果