返回

如何在 iPython 笔记本中轻松测量单元格执行时间?

python

轻松测量 iPython 笔记本中单元格的执行时间

在 iPython 笔记本中测量单元格执行时间是至关重要的,因为它有助于性能优化和调试。本文将指导您了解如何利用不同的方法轻松测量单元格执行时间,并获取单元格的原始输出。

问题:获取单元格执行时间和输出

测量单元格执行时间的同时获取原始输出有时会让人觉得很棘手。%%timeit -r1 -n1 可能不会显示定义的变量,而 %%time 只适用于包含一条语句的单元格。

解决方法:Execute Time in Nbextension

我们强烈推荐使用 Execute Time in Nbextension,它是一个出色的 Jupyter 笔记本扩展。它提供了一个直观的界面,用于查看执行时间和其他相关信息。安装后,您可以在每个单元格的右侧看到一个“执行时间”按钮。点击此按钮即可查看有关单元格执行时间的详细信息。

使用 %%time 和 %%timeit 魔术命令

%%time%%timeit 是 iPython 内置的魔术命令,现在可以正确显示单元格执行时间和输出。

  • %%time 用于测量单个单元格的执行时间。例如:
%%time
import numpy as np
x = np.random.rand(10000, 10000)
x.mean()
  • %%timeit 用于测量多次重复的代码块的执行时间。例如:
%%timeit
import time
start = time.time()
x = np.random.rand(10000, 10000)
x.mean()
end = time.time()
print(f"Execution time: {end - start} seconds")

示例:比较两个方法

为了比较 Execute Time in Nbextension 和 %%time 魔术命令,我们运行以下代码块:

# 使用 Execute Time in Nbextension
%%time
import numpy as np
x = np.random.rand(10000, 10000)
x.mean()

# 使用 %%time 魔术命令
%%time
import time
start = time.time()
x = np.random.rand(10000, 10000)
x.mean()
end = time.time()
print(f"Execution time: {end - start} seconds")

使用 Execute Time in Nbextension,执行时间以微秒为单位显示在单元格的右上角。使用 %%time 魔术命令,执行时间将打印在单元格下方。

常见问题解答

  1. 如何禁用 Execute Time in Nbextension?

    • 要禁用扩展,请转到 Jupyter 笔记本的“文件”菜单 > “首选项” > “安装” > “扩展”选项卡,然后取消选中“Execute Time”复选框。
  2. 我可以使用 Execute Time in Nbextension 在 Jupyter Lab 中测量单元格执行时间吗?

    • 目前,该扩展不支持 Jupyter Lab。
  3. %%timeit%%time 之间有什么区别?

    • %%timeit 用于测量多次重复执行的代码块的执行时间,而 %%time 用于测量单个单元格的执行时间。
  4. 如何测量包含多行代码的单元格的执行时间?

    • 您可以在包含多行代码的单元格中使用 %%time 魔术命令。执行时间将包括所有行代码的执行时间。
  5. Execute Time in Nbextension 与 iPython 中的内建计时器有何区别?

    • Execute Time in Nbextension 提供了一个更用户友好的界面,用于查看执行时间,而内建计时器需要手动计算执行时间。

结论

测量 iPython 笔记本中单元格的执行时间对于代码性能优化和调试至关重要。本文探讨了利用 Execute Time in Nbextension 和 %%time%%timeit 魔术命令的不同方法。通过使用这些方法,您可以轻松获取单元格的执行时间和原始输出,从而提高代码的效率和性能。