gpt4 book ai didi

python - IPython:如何为每次迭代保存 timeit 值

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:05 25 4
gpt4 key购买 nike

我是 Python 的新手,正在尝试绘制两个函数的计算速度。例如,定义了两个函数(见下文)后,如何使用 IPython/Jupyter 中的 timeit 函数返回每次迭代的时间?

def func1(x) : 
return x*x
def func2(x) :
return x+x
%timeit for x in range(100) : func1(x)
%timeit for x in range(100) : func2(x)

我读了https://ipython.org/ipython-doc/3/interactive/magics.html我可以使用 '-o' 来“返回一个可以存储在变量中的 TimeitResult 以更详细地检查结果。”

但是我如何将它保存到变量“func1_time”以及如何读取每次迭代的时间?我的目标是绘制两个函数的 x 与时间的关系图。

任何帮助将不胜感激。谢谢。

最佳答案

您只需执行以下操作:

func1_time = %timeit -o func1(10)

您可以访问每次迭代的时间

func1_time.timings

和每个循环花费的总时间

func1_time.all_runs

请注意,您的循环是不必要的,因为 %timeit 在一个循环中执行您的代码 N 次并迭代此循环 r 次。


更新

如果您需要不同参数 x 的时间,您可以尝试以下方法:

func1_time = []
for i in [10, 100, 1000]:
foo = %timeit -o func1(x)
func1_time.append(foo)

然后 func1_time[0].timings 保存了 func1(10) 的计时。

如果这样做,我建议指定 rN 选项,因为 %timeit 会根据复杂度调整循环次数问题。这意味着,按时执行函数所需的时间越长,运行的循环就越少。

关于python - IPython:如何为每次迭代保存 timeit 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205956/

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