Lib/timeit.py
此模块提供了一种简单的方法来计算一小段 Python 代码的耗时。
它有 命令行接口 以及一个 可调用 方法。
Python 接口 三个便利函数和一个
timeit.timeit(stmt='pass', setup='pass', timer=, number=1000000, globals=None)
使用给定语句、 setup 代码和 timer 函数创建一个 Timer 实例,并执行 number 次其 timeit() 方法。
可选的 globals 参数指定用于执行代码的命名空间。
import timeit
def test(num, times):
result = num ** times
while result != 0:
result -= 1
# print('test over once')
return
print(timeit.timeit('test(2,10)', setup='from __main__ import test', number=1000))
# output: 0.03185769997071475 (因电脑性能可变)
def f(x):
return x ** 2
def g(x):
return x ** 4
def h(x):
return x ** 8
print(timeit.timeit('[func(42) for func in (f,g,h)]', globals=globals()))
# output: 0.9155400999588892 (因电脑性能可变)
timeit.repeat(stmt='pass', setup='pass', timer=, repeat=5, number=1000000, globals=None)
使用给定语句、 setup 代码和 timer 函数创建一个 Timer 实例,并使用给定的 repeat 计数和 number 执行运行其 repeat() 方法。
可选的 globals 参数指定用于执行代码的命名空间。
import timeit
import pprint
def test(num, times):
result = num ** times
while result != 0:
result -= 1
# print('test over once')
return
#pprint.pprint(timeit.repeat('__main__.test(2,10)', setup='import __main__', repeat=3, number=1000))
pprint.pprint(timeit.repeat('test(2,10)', setup='from __main__ import test',repeat=3, number=1000))
# output: [0.031496500014327466, 0.030269599985331297, 0.030263799999374896] (因电脑性能可变)
def f(x):
return x ** 2
def g(x):
return x ** 4
def h(x):
return x ** 8
pprint.pprint(timeit.repeat('[func(42) for func in (f,g,h)]', repeat=3,globals=globals()))
# output: [0.8898227000026964, 0.8891328999889083, 0.8846025999519043](因电脑性能可变)
timeit.default_timer()
默认的计时器,总是 time.perf_counter() 。
公共类
class timeit.Timer(stmt='pass', setup='pass', timer=, globals=None)
用于小代码片段的计数执行速度的类。
构造函数接受一个将计时的语句、一个用于设置的附加语句和一个定时器函数。
两个语句都默认为 'pass'
;计时器函数与平台有关(请参阅模块文档字符串)。
stmt 和 setup 也可能包含多个以 ;
或换行符分隔的语句,只要它们不包含多行字符串文字即可。
该语句默认在 timeit 的命名空间内执行;可以通过将命名空间传递给 globals 来控制此行为。
timeit(number=1000000)
执行 number 次主要语句。
这将执行一次 setup 语句,然后返回执行主语句多次所需的时间,以秒为单位测量为浮点数。
参数是通过循环的次数,默认为一百万。
要使用的主语句、 setup 语句和 timer 函数将传递给构造函数。
autorange(callback=None)
自动决定调用多少次 timeit() 。
repeat(repeat=5, number=1000000)
调用 timeit() 几次。
print_exc(file=None)
帮助程序从计时代码中打印回溯。
import timeit
def test(num, times):
result = num ** times
while result != 0:
result -= 1
# print('test over once')
return
myTimer1 = timeit.Timer('test(2,10)', setup='from __main__ import test')
print(myTimer1.timeit(1000))
# output: 0.030595600022934377 (因电脑性能可变)
print(myTimer1.repeat(3, 1000))
# output: [0.030345899984240532, 0.03075980005087331, 0.030356000002939254] (因电脑性能可变)
print(myTimer1.autorange())
# output: (10000, 0.31549419998191297) (因电脑性能可变)
def f(x):
return x ** 2
def g(x):
return x ** 4
def h(x):
return x ** 8
myTimer2 = timeit.Timer('[func(42) for func in (f,g,h)]', globals=globals())
print(myTimer2.timeit(1000))
# output: 0.0009309999877586961(因电脑性能可变)
print(myTimer2.repeat(3, 1000))
# output: [0.000907599984202534, 0.0009109000093303621, 0.0009160999907180667] (因电脑性能可变)
print(myTimer2.autorange())
# output: (500000, 0.4462444999953732) (因电脑性能可变)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)