欢迎访问宙启技术站
智能推送

Python中如何使用timeit函数测试代码运行时间

发布时间:2023-05-26 07:03:41

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代码的性能进行测试,从而优化代码性能。在使用过程中需要注意,测试代码尽可能要去除外部因素的影响,同时要测试多次取均值,提高测试的准确性和可信度。