在python中,计算模块的运行时间是我们开发中经常遇到的问题。那么应该如何更加精准的计算时间呢?
1, timeit模块简介
timeit模块可以用来测试一小段Python代码的执行速度。
核心代码1介绍 :
class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
Timer是测量小段代码执行速度的类。
stmt参数是要测试的代码语句
setup参数是测试语句的路径
eg:
timer1 = timeit.Timer("T1()","from __main__ import T1")
核心代码2介绍:
timeit.Timer.timeit(number=1000000)
Timer类中测试语句执行速度的对象方法。
number参数是测试代码时的测试次数,默认为1000000次。可简写为timer1.timeit(1000)
timeit方法返回执行代码的平均耗时,它是一个float类型的秒数。
2, 列表性能测试实践
我在这里引入了timeit
时间模块。timer.timeit函数参数中的number含义的是,运行对应的次数后取其平均值。
import timeit
def T1():
'''表内置属性'''
li = []
for i in range(1000):
li.append(i)
def T2():
'''列表拼接'''
li = []
for i in range(1000):
li = li + [i]
def T3():
'''列表推导式'''
li = [i for i in range(1000)]
def T4():
'''属性转换'''
li = list(range(1000))
if __name__ == "__main__":
# timer = timeit.Timer('T1()',"from __main__ import T1")
# print("%s: %f seconds" % ('T1()',timer.timeit(number=1000)))
test_list = ['T1()','T2()','T3()','T4()']
for i in test_list:
timer = timeit.Timer(i,"from __main__ import T1,T2,T3,T4")
print("%s: %f seconds" % (i,timer.timeit(number=1000)))