Python 中的 %timeit 是什么?
What is %timeit in Python?
我读代码时总是这样计算时间的:
%timeit function()
这里的“%”是什么意思?
我想,“%”总是用来替换字符串中的东西,比如%s表示替换字符串,%d表示替换数据,但我不知道这种情况。
IPython 拦截那些。它们被称为内置魔法命令,列表如下:Built-in magic commands.
您还可以创建自己的自定义魔法,Defining custom magics。
您的 timeit
在这里:%timeit
这在 IPython 中被称为 线条魔术 。它们的独特之处在于它们的参数只延伸到当前行的末尾,而魔法本身确实是为命令行开发而构建的。 timeit
用于计时代码的执行。
如果您想查看可以使用的所有魔法,只需键入:
%lsmagic
获取线魔术和单元魔术的列表。
文档中的一些更神奇的信息here:
IPython has a system of commands we call magics that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.
根据你是处于line还是cell模式,有两种不同的使用方式%timeit
。你的问题说明了第一种方式:
In [1]: %timeit range(100)
对比
In [1]: %%timeit
: x = range(100)
:
%timeit
是一个IPython magic函数,可用于对特定代码段(单个执行语句,或单个方法)计时。
来自文档:
%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
from the standard library和运行代码以找出哪种方法更好。
%timeit 会根据总执行时间 window.
自动计算代码所需的 运行 秒数
您也可以使用当前的控制台变量,而无需像 timeit.timeit
那样传递整个代码片段,以构建在 timeit 工作的另一个环境中构建的变量。
Line magics 以 % 字符为前缀,工作起来很像 OS 命令行调用:它们得到行的其余部分的参数,其中参数在没有括号或引号的情况下传递。 Cell magics 以双 %% 为前缀,它们是函数,不仅作为参数获取行的其余部分,而且它下面的行在一个单独的参数中。
一个关于 %%timeit 非常 的微妙之处:假设它在 cell 上运行“魔法”,你会得到错误...
UsageError: Line magic function %%timeit
not found
...如果 %%timeit 以上有任何 code/comment 行。换句话说,确保 %%timeit 是单元格中的第一个命令。
我读代码时总是这样计算时间的:
%timeit function()
这里的“%”是什么意思?
我想,“%”总是用来替换字符串中的东西,比如%s表示替换字符串,%d表示替换数据,但我不知道这种情况。
IPython 拦截那些。它们被称为内置魔法命令,列表如下:Built-in magic commands.
您还可以创建自己的自定义魔法,Defining custom magics。
您的 timeit
在这里:%timeit
这在 IPython 中被称为 线条魔术 。它们的独特之处在于它们的参数只延伸到当前行的末尾,而魔法本身确实是为命令行开发而构建的。 timeit
用于计时代码的执行。
如果您想查看可以使用的所有魔法,只需键入:
%lsmagic
获取线魔术和单元魔术的列表。
文档中的一些更神奇的信息here:
IPython has a system of commands we call magics that provide effectively a mini command language that is orthogonal to the syntax of Python and is extensible by the user with new commands. Magics are meant to be typed interactively, so they use command-line conventions, such as using whitespace for separating arguments, dashes for options and other conventions typical of a command-line environment.
根据你是处于line还是cell模式,有两种不同的使用方式%timeit
。你的问题说明了第一种方式:
In [1]: %timeit range(100)
对比
In [1]: %%timeit
: x = range(100)
:
%timeit
是一个IPython magic函数,可用于对特定代码段(单个执行语句,或单个方法)计时。
来自文档:
%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
from the standard library和运行代码以找出哪种方法更好。%timeit 会根据总执行时间 window.
自动计算代码所需的 运行 秒数您也可以使用当前的控制台变量,而无需像
timeit.timeit
那样传递整个代码片段,以构建在 timeit 工作的另一个环境中构建的变量。
Line magics 以 % 字符为前缀,工作起来很像 OS 命令行调用:它们得到行的其余部分的参数,其中参数在没有括号或引号的情况下传递。 Cell magics 以双 %% 为前缀,它们是函数,不仅作为参数获取行的其余部分,而且它下面的行在一个单独的参数中。
一个关于 %%timeit 非常 的微妙之处:假设它在 cell 上运行“魔法”,你会得到错误...
UsageError: Line magic function
%%timeit
not found
...如果 %%timeit 以上有任何 code/comment 行。换句话说,确保 %%timeit 是单元格中的第一个命令。