我总是像这样阅读代码来计算时间:
%timeit function()
你能解释一下这里的“%”是什么意思吗?
我认为,“%”总是用于替换字符串中的某些内容,例如 %s 表示替换字符串,%d 表示替换数据,但我不知道这种情况。
我总是像这样阅读代码来计算时间:
%timeit function()
你能解释一下这里的“%”是什么意思吗?
我认为,“%”总是用于替换字符串中的某些内容,例如 %s 表示替换字符串,%d 表示替换数据,但我不知道这种情况。
%timeit
是一个ipython 魔术函数,可用于对特定代码段(单个执行语句或单个方法)进行计时。
从文档:
%时间
Time execution of a Python statement or expression Usage, in line mode: %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
要使用它,例如,如果我们想知道 using 是否xrange
比 using 快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
构建在 timeit 工作的另一个环境中构建的变量。
这在 iPython中被称为线魔法。它们的独特之处在于它们的参数只延伸到当前行的末尾,而且魔法本身是为命令行开发而设计的。 timeit
用于计时代码的执行。
如果您想查看所有可以使用的魔法,您只需键入:
%lsmagic
获取线魔法和细胞魔法的列表。
来自此处的文档的一些进一步的魔术信息:
IPython 有一个我们称之为魔法的命令系统,它有效地提供了一种与 Python 语法正交的迷你命令语言,并且用户可以使用新命令进行扩展。魔术旨在以交互方式输入,因此它们使用命令行约定,例如使用空格分隔参数,使用短划线表示选项和其他命令行环境典型的约定。
根据您是处于线路模式还是单元模式,有两种不同的使用方式%timeit
。您的问题说明了第一种方式:
In [1]: %timeit range(100)
对比
In [1]: %%timeit
: x = range(100)
:
我只是想添加一个关于 %%timeit的非常微妙的观点。鉴于它在单元格上运行“魔法” ,你会得到错误......
UsageError:%%timeit
找不到线魔术功能
...如果 %%timeit 上方有任何代码/注释行。换句话说,确保 %%timeit 是单元格中的第一个命令。
我知道这是所有专家都会说的一个小问题,但我只是想为刚开始使用魔术的年轻巫师加上我的半分钱。
IPython 拦截那些,它们被称为内置魔法命令,这里是列表:https ://ipython.org/ipython-doc/dev/interactive/magics.html
您还可以创建自己的自定义魔法,https: //ipython.org/ipython-doc/dev/config/custommagics.html
你timeit
在这里https://ipython.org/ipython-doc/dev/interactive/magics.html#magic-timeit
行魔法以%字符为前缀,其工作方式与操作系统命令行调用非常相似:它们将行的其余部分作为参数获取,其中传递的参数不带括号或引号。单元格魔法以双%%为前缀,它们是函数,不仅可以作为参数获取该行的其余部分,还可以将其下方的行作为单独的参数获取。