【发布时间】:2021-04-06 11:23:32
【问题描述】:
IPython 或 Jupyter notebook 中的%%timeit 有两个我喜欢的功能。
-
在有限的时间内运行,针对给定的批次自动调整迭代次数。
-
输出是平均值 + 标准差。这比许多运行中的最短运行时间要好。
这是来自 IPython 终端的示例输出。第一个来自函数的“慢版本”,第二个来自更快的版本。
In [21]: %timeit hh = gg.get_map(form="232", year=2019, source="form")
1.82 s ± 111 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [18]: %timeit jj = fm.get_map(form="232", year=2019, source="form")
324 µs ± 22.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
请注意,当函数运行缓慢时,它会返回 7 x 1 的执行时间,但当它运行得很快时,它会调高至 7 x 1000。
我一直在研究 IPython 代码以了解它们是如何做到这一点的,我认为我可以适应一段 Python 代码。这是一项艰巨的工作!它把我带入了与 AST 交互的陌生领域。
在我看来,以前一定有人这样做过。没有 Python 包吗?
【问题讨论】:
标签: python jupyter-notebook ipython timeit