标准库:timeit --- 测量小代码片段的执行时间

标准库:timeit --- 测量小代码片段的执行时间,第1张

 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) (因电脑性能可变)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存