Python中如何使用timeit函数测试代码运行时间
Python中内置了一个用于测试代码运行时间的模块timeit,该模块提供了方便快捷的代码计时方法,使用该模块可以轻松地对代码的运行时间进行测试。本文将介绍Python中如何使用timeit函数测试代码运行时间。
一、timeit函数
timeit是Python中的一个内置模块,用于测试代码的运行时间。该模块提供了一个名为timeit的函数,该函数可以接受需要测试的代码作为参数,以及测试的次数(默认为1000000次),并返回执行代码所需的时间。
timeit(stmt='pass', setup='pass', timer=<built-in function perf_counter>, number=1000000, globals=None)
timeit函数的参数说明如下:
1. stmt:需要测试的代码,可以是字符串形式的语句或函数调用,如"sorted(list)"。
2. setup:初始化代码,该代码在测试代码之前执行,并且仅执行一次。可以用来初始化需要测试的数据,如"import numpy; a = numpy.random.rand(100)"。
3. timer:计时器,提供了可选的计时方法,默认使用perf_counter计时方法(Python 3.3及以上版本)。
4. number:测试的次数,默认为1000000次,可以根据需要调整,建议至少测试3次以减少误差。
5. globals:一个包含全局变量的命名空间。如果不指定,则使用当前命名空间。可以用来定义测试代码所需要的全局变量。
二、timeit函数的使用示例
1. 测试单行语句的执行时间
下面是一个测试列表排序的例子:
import timeit
setup = "a = [1,2,3,4,5,6,7,8,9]"
stmt = "a.sort()"
t = timeit.timeit(stmt, setup, number=10000)
print("排序所需时间:{:.5f}秒".format(t))
通过上面的代码,我们可以测试出列表排序所需的时间,测试结果为:排序所需时间:0.00115秒。
2. 测试多行语句的执行时间
可以将需要测试的多行代码放在一个函数里面。如下面的例子中,我们定义了一个名为test_function的函数,并将其传递给timeit函数进行测试:
import timeit
def test_function():
for i in range(1000):
a = i * i
t = timeit.timeit(test_function, number=1000)
print("执行函数所需时间:{:.5f}秒".format(t))
通过上面的代码,我们可以测试出执行test_function函数所需的时间,测试结果为:执行函数所需时间:0.04726秒。
3. 测试自定义模块的执行时间
如果需要测试自定义模块的执行时间,需要将模块导入到测试环境中,并指定setup参数,如下面的例子:
import timeit
setup = """
import my_module
a = [i for i in range(100)]
"""
stmt = "my_module.my_function(a)"
t = timeit.timeit(stmt, setup, number=1000)
print("执行函数所需时间:{:.5f}秒".format(t))
通过上面的代码,我们可以测试出my_function函数所需的时间,测试结果为:执行函数所需时间:0.03771秒。
总结:
以上就是Python中使用timeit函数测试代码运行时间的方法,通过使用timeit函数,可以快速方便地对Python代码的性能进行测试,从而优化代码性能。在使用过程中需要注意,测试代码尽可能要去除外部因素的影响,同时要测试多次取均值,提高测试的准确性和可信度。
