gpt4 book ai didi

python - %timeit 在代码中等效

转载 作者:太空狗 更新时间:2023-10-29 21:39:23 25 4
gpt4 key购买 nike

魔法命令 %timeit 非常适合以交互方式测量代码执行时间。但是,我想获得 %timeit 的结果以便绘制结果。 timeit.timeit 也允许这样做,但没有 %timeit 具有的迭代次数的自动缩放和结果的规范化。

是否有一个内置函数可以对一段代码进行计时,它还会自动调整它执行的迭代次数,并返回一个规范化的结果?

最佳答案

魔法 %timeit命令提供了一个 -o 选项:

-o: return a TimeitResult that can be stored in a variable to inspect the result in more details.

它仍然会打印结果,但也会返回结果,以便可以将其捕获在变量中。魔术命令的语法有点受限,但您可以通过将其分配给变量并将该变量附加到列表来在 list 中收集不同的结果:

res = []
for i in range(3):
a = %timeit -o 10*10
res.append(a)
# 10000000 loops, best of 3: 61 ns per loop
# 10000000 loops, best of 3: 61.1 ns per loop
# 10000000 loops, best of 3: 60.8 ns per loop

然后访问res:

print(res)
# [<TimeitResult : 10000000 loops, best of 3: 61.2 ns per loop>,
# <TimeitResult : 10000000 loops, best of 3: 61.3 ns per loop>,
# <TimeitResult : 10000000 loops, best of 3: 61.5 ns per loop>]

这些结果中的每一个都有几个可能感兴趣的属性:

print(res[0].all_runs)
# [0.6166532894762563, 0.6102780388983005, 0.6370787790842183]
print(res[0].best)
# 6.102780388983005e-08
print(res[0].compile_time)
# 0.00020554513866197934
print(res[0].loops)
# 10000000
print(res[0].repeat)
# 3
print(res[0].worst)
# 1.1170931449020795e-06

例如,要绘制最佳时间,您需要创建一个包含最佳值的新列表:

res_best_times = [result.best * 1e9 for result in res] 
# "* 1e9" to get the result in nanoseconds
print(res_best_times)
# [61.2, 61.3, 61.5]

关于python - %timeit 在代码中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com