如何使用 %%timeit 单元魔法并排除设置代码?

Posted

技术标签:

【中文标题】如何使用 %%timeit 单元魔法并排除设置代码?【英文标题】:How to use %%timeit cell magic and exclude setup code? 【发布时间】:2018-01-29 16:27:31 【问题描述】:

%timeit 魔法支持在行模式和单元模式下执行。使用单元格模式,通过%%timeit(注意:两个百分号)调用,可用于从测量中排除一些设置代码:

%%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code code code...

但是你如何使用它呢?这给出了一个错误:

>>> %%timeit sleep(0.1); sleep(0.1)
... 
UsageError: %%timeit is a cell magic, but the cell body is empty. 
Did you mean the line magic %timeit (single %)?

这并不排除基准测试的第一行:

>>> %%timeit
... sleep(0.1)
... sleep(0.1)
... 
200 ms ± 17.6 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)

【问题讨论】:

【参考方案1】:

将设置放在第一行,将正文放在下一行:

>>> %%timeit sleep(0.1)
... sleep(0.2)
... sleep(0.3)
... 
500 ms ± 14.1 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)

【讨论】:

以上是关于如何使用 %%timeit 单元魔法并排除设置代码?的主要内容,如果未能解决你的问题,请参考以下文章

避免在 timeit.repeat() 基准测试中进行昂贵的设置

使用 timeit 为不同的测试语句只运行一次设置代码

如何在每个测试都需要随机设置的情况下使用 timeit

如何从VS2012单元测试中的代码覆盖率分析中排除名称以“.Test”结尾的项目

memit 和 timeit 同时

如何使用timeit模块