python中的%timeit是什么?

python中的%timeit是什么?,python,ipython,timeit,magic-function,Python,Ipython,Timeit,Magic Function,我总是这样阅读代码来计算时间: %timeit function() 你能解释一下这里的“%”是什么意思吗 我想,“%”总是用来替换字符串中的某些内容,比如%s表示替换字符串,%d表示替换数据,但我不知道这种情况。IPython截取这些,它们被称为内置的魔术命令,下面是列表: 您还可以创建自己的自定义魔法 你的timeit就在这里这在iPython中被称为一种线条魔术。它们的独特之处在于,它们的参数仅扩展到当前行的末尾,而magics本身实际上是为命令行开发而构建的timeit用于对代码的执行

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

%timeit function()
你能解释一下这里的“%”是什么意思吗


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

IPython截取这些,它们被称为内置的魔术命令,下面是列表:

您还可以创建自己的自定义魔法

你的
timeit
就在这里

这在iPython中被称为一种线条魔术。它们的独特之处在于,它们的参数仅扩展到当前行的末尾,而magics本身实际上是为命令行开发而构建的
timeit
用于对代码的执行进行计时

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

%lsmagic
获取行魔法和单元格魔法的列表

文档中的一些进一步信息:

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

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

In [1]: %timeit range(100)
vs


%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
你会得到他们的时间安排

%timeit
的主要优点是:

  • 您不需要导入
    timeit.timeit
    ,并多次运行代码以确定哪种方法更好

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

  • 您还可以使用当前控制台变量,而无需像在
    timeit.timeit
    中那样传递整个代码段,以生成在另一个timeit工作的环境中生成的变量


我只想添加使用%timeit的另一个有用的优点:

  • 还可以使用当前控制台变量,而无需像timeit.timeit那样传递整个代码段来构建在另一个timeit工作的环境中构建的变量

PS:我知道这应该是一个评论来回答上面的问题,但我目前没有足够的声誉来回答这个问题,希望我写的东西能对别人有所帮助,并帮助我赢得足够的声誉,以便下次发表评论。

行魔法%字符为前缀,工作方式与操作系统命令行调用非常类似:它们将行的其余部分作为参数,参数传递时不带括号或引号单元格魔法的前缀是一个双精度的%%,它们不仅是作为参数的函数,而且是作为单独参数的函数。我只想在%%timeit上添加一个非常微妙的点。如果它在单元格上运行“magics”,您将得到错误

UsageError:找不到行魔术函数
%%timeit

…如果%%timeit上面有任何代码/注释行。换句话说,请确保%%timeit是单元格中的第一个命令


我知道这是所有专家都会说的一个小问题,但我只是想为那些从魔术开始的年轻巫师们加上我的半分钱。

这是伊皮顿的魔术命令。请参阅:是否有方法对ipython shell中的宏或一组行计时?@alpha_989是的,您可以将这些行集合包装到函数中,然后对函数计时,如:
%timeit function()
@mu無: 请澄清
timer.timeit
——这是一个实际的模块名称吗?@fountainhead:输出
10000个循环,每个循环最好3:29.6µs
可以解释为:(1.)表达式运行10000次以获得总时间(2)。然后总时间除以10000以获得“每个循环”时间和(3)总时间计算进行3次,最后(4.)在3次总时间中,使用最小总时间(也称为“3中最好”)作为输出。我的解释正确吗?是/否?您也可以编辑其他人的答案以改进它。你应该已经有足够的声誉了谢谢,我不知道@Tarickwellings不适用于iPython外壳,仅适用于Jupyter笔记本电脑
Time execution of a Python statement or expression

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