我希望Python类/函数近似于IPython%%timeit
IPython或Jupyter笔记本中的我希望Python类/函数近似于IPython%%timeit,python,jupyter-notebook,ipython,timeit,Python,Jupyter Notebook,Ipython,Timeit,IPython或Jupyter笔记本中的%%timeit有两个我喜欢的功能 运行一段有限的时间,自动调整给定批次数的迭代次数 输出为平均值+标准偏差。这比许多运行中的最小运行时间要好 下面是IPython终端的输出示例。第一个来自函数的“慢版本”,第二个来自更快的版本 In [21]: %timeit hh = gg.get_map(form="232", year=2019, source="form") 1.82 s ± 111 ms per l
%%timeit
有两个我喜欢的功能
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包吗?简单的回答是,在py文件/纯Python代码块中无法实现这一点 一旦解析了文件,就无法从Python获取AST。这就是为什么“宏”是Python中经常要求的特性之一,因为它们可以让您执行类似的操作 可能有一些黑客的方法,但粗略地说,您需要找到定义代码的文件,并将内容作为字符串进行操作;IPython可以做的就是自己进行解析 。。。。或者制作一个API,该API采用多行字符串而不是Python代码块,这很难看,但可以工作
更一般地说,如果您认为在IPython中有一些代码块我们可以使其更具可重用性,请随意打开一个问题/请求。我(目前)不接受这个答案,因为这太令人沮丧了!其他人能参与进来确认@Matt的评估吗?作为额外信息;我大部分时间都是用IPython编写的,我希望被证明是错的。另请参见包含Python宏的Xonsh,并将其用于timeit。