一、time模块
Python的time模块提供了一种测量代码执行时间的简单方法。time模块包含了time()函数和clock()函数,这两个函数都可以用来测量时间,但是它们的计时方式有所不同。
1. time()函数
import time
start = time.time()
# 模拟代码执行
for i in range(100000):
pass
end = time.time()
print("time()函数测量结果:", end - start, "秒")
time()函数返回当前时间的时间戳,以浮点数表示,它的计时方式是从1970年1月1日0时0分0秒到现在的秒数。上面的代码用for循环模拟了代码的执行,可以得到执行所用的时间。
2. clock()函数
import time
start = time.clock()
# 模拟代码执行
for i in range(100000):
pass
end = time.clock()
print("clock()函数测量结果:", end - start, "秒")
clock()函数返回程序运行的CPU时间,以浮点数表示。它的计时方式是从程序开始运行到调用该函数时的CPU时间。上面的代码用for循环模拟了代码的执行,可以得到执行所用的CPU时间。
二、timeit模块
Python的timeit模块提供了一种更高级的测量代码执行时间的方法,包括了多次运行、平均值、标准差等更为强大的特性。
1. timeit()函数
import timeit
def test():
l = []
for i in range(100):
l.append(i)
t = timeit.timeit(stmt=test, number=10000)
print("timeit()函数测量结果:", t, "秒")
timeit()函数接收两个参数:stmt和number。stmt是需要执行的代码,可以是一个函数,也可以是一个字符串;number是执行stmt的次数。上面的代码使用了timeit()函数来测试一个函数test()的运行时间,执行了10000次。timeit()函数会自动计算运行时间并返回运行时间的平均值。
2. Timer()类
import timeit
t = timeit.Timer('x = sum(range(1000))')
print("Timer()类测量结果:", t.timeit(number=10000), "秒")
Timer()类可以更为灵活地进行测试,它的构造函数可以接收一个字符串作为参数,字符串中的代码会在计时之前被执行。上面的代码创建了一个Timer对象,它会测试sum(range(1000))这段代码的执行时间,并执行10000次。Timer对象也可以使用repeat()方法和timeit()方法来测试代码的执行时间。
三、结语
Python的time模块和timeit模块为优化代码执行时间提供了可靠的工具,根据不同的需求选择不同的测量方法可以更加准确地测量代码的执行时间。在编写Python程序时,经常需要测量代码的执行时间,选用合适的方法可以提高程序的性能。