如何在 iPython 笔记本中轻松测量单元格执行时间?
2024-03-14 08:23:14
轻松测量 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
魔术命令,执行时间将打印在单元格下方。
常见问题解答
-
如何禁用 Execute Time in Nbextension?
- 要禁用扩展,请转到 Jupyter 笔记本的“文件”菜单 > “首选项” > “安装” > “扩展”选项卡,然后取消选中“Execute Time”复选框。
-
我可以使用 Execute Time in Nbextension 在 Jupyter Lab 中测量单元格执行时间吗?
- 目前,该扩展不支持 Jupyter Lab。
-
%%timeit
和%%time
之间有什么区别?%%timeit
用于测量多次重复执行的代码块的执行时间,而%%time
用于测量单个单元格的执行时间。
-
如何测量包含多行代码的单元格的执行时间?
- 您可以在包含多行代码的单元格中使用
%%time
魔术命令。执行时间将包括所有行代码的执行时间。
- 您可以在包含多行代码的单元格中使用
-
Execute Time in Nbextension 与 iPython 中的内建计时器有何区别?
- Execute Time in Nbextension 提供了一个更用户友好的界面,用于查看执行时间,而内建计时器需要手动计算执行时间。
结论
测量 iPython 笔记本中单元格的执行时间对于代码性能优化和调试至关重要。本文探讨了利用 Execute Time in Nbextension 和 %%time
和 %%timeit
魔术命令的不同方法。通过使用这些方法,您可以轻松获取单元格的执行时间和原始输出,从而提高代码的效率和性能。