python timeit module

简介

用于计算一小段 Python 代码耗时的模块。

源码: Lib/timeit.py

用法

包含方法

1
2
3
4
>>> import timeit

>>> timeit.__all__
['Timer', 'timeit', 'repeat', 'default_timer']

timeit.Timer(…)

class timeit.Timer(stmt=’pass’, setup=’pass’, timer=<timer function>, globals=None)

stmt:用于传入要测试时间的代码块,可以直接接受字符串的表达式,也可以接受单个变量或函数。传入函数时要把函数申明在当前文件中,然后在 stmt = ‘func()’ 执行函数,然后使用 setup = ‘from __main__ import func’

setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要用分号;隔开语句。

timer:一个定时器函数,与平台有关。

globals: 参数指定用于执行代码的命名空间。

1
2
3
4
5
6
7
8
9
10
11
12
>>> import timeit

# test function
>>> def f(x):
max(x)

>>> nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]

# create timer object
>>> timer = timeit.Timer(stmt='f(nums)', setup='from __main__ import f, nums')
>>> [_ for _ in dir(timer) if not _.startswith('_')]
['autorange', 'inner', 'print_exc', 'repeat', 'src', 'timeit', 'timer']

timeit.timeit(…)

timeit.timeit(stmt=’pass’, setup=’pass’, timer=<default timer>, number=1000000, globals=None)

其余参数说明见 timeit.Timer

number:要测试的代码的运行次数,默认100000次,对于耗时的代码,运行太多次会比较慢,此时建议自己修改一下运行次数

1
2
>>> timer.timeit(number=100)
0.00013752799986832542

timeit.repeat(…)

timeit.repeat(stmt=’pass’, setup=’pass’, timer=<default timer>, repeat=5, number=1000000, globals=None)

其余参数说明见 timeit.Timer

repeat:指测试要重复几次,每次的结果构成列表返回,默认5次。

number:要测试的代码的运行次数,默认100000次。

1
2
>>> timer.repeat(number=100)
[0.0002869599998120975, 0.00013793800007988466, 0.00012151600003562635, 0.00021511800014195614, 0.00019376999989617616]

timeit.default_timer(…)

默认的计时器,总是 time.perf_counter()

1
2
>>> timeit.default_timer()
2506.128862259
-------------本文结束感谢您的阅读-------------