Python 中的 %timeit 是什么?

新手上路,请多包涵

我总是阅读代码以这样计算时间:

 %timeit function()

这里的“%”是什么意思?

我认为,“%”总是用于替换字符串中的某些内容,例如 %s 表示替换字符串,%d 表示替换数据,但我不知道这种情况。

原文由 xirururu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 863
2 个回答

%timeit 是一个 IPython魔术 函数,可用于对特定代码段(单个执行语句或单个方法)计时。

从文档中:

 %timeit

   Time execution of a Python statement or expression

   Usage, in line mode:
       %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement

要使用它,例如如果我们想知道使用 xrange 是否比使用 range 更快,你可以简单地做:

 In [1]: %timeit for _ in range(1000): True
10000 loops, best of 3: 37.8 µs per loop

In [2]: %timeit for _ in xrange(1000): True
10000 loops, best of 3: 29.6 µs per loop

你会得到他们的时间。

%timeit 的主要优点是:

  • 不必 从标准库 中导入 timeit.timeit ,并多次运行代码以确定哪种方法更好。

  • %timeit 将根据总共 2 秒的执行窗口自动计算代码所需的运行次数。

  • 您还可以使用当前的控制台变量而不传递整个代码片段,如 timeit.timeit 构建在另一个环境中构建的变量,它可以工作。

原文由 Anshul Goyal 发布,翻译遵循 CC BY-SA 4.0 许可协议

这在 IPython 中被称为 _行魔法_。它们的独特之处在于它们的参数只延伸到当前行的末尾,而魔法本身确实是为命令行开发而构建的。 timeit 用于计时代码的执行。

如果您想查看可以使用的所有魔法,只需键入:

 %lsmagic

获取 line magics 和 cell magics 的列表。

此处 文档中的一些更神奇的信息:

IPython 有一个我们称之为 魔法 的命令系统,它有效地提供了一种迷你命令语言,它与 Python 的语法正交,并且可以由用户使用新命令进行扩展。魔术旨在以交互方式键入,因此它们使用命令行约定,例如使用空格分隔参数、使用破折号分隔选项和其他典型的命令行环境约定。

根据您处于 线路 模式还是 单元格 模式,有两种不同的使用方式 %timeit 。您的问题说明了第一种方式:

 In [1]: %timeit range(100)

对比

In [1]: %%timeit
      : x = range(100)
      :

原文由 miradulo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题