什么是python中的%timeit?

问题描述 投票:53回答:3

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

%timeit function()

你能解释一下“%”的含义吗?

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

python ipython
3个回答
53
投票

%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

你会得到他们的时间。

主要的优点是你不必导入timer.timeit,并多次运行代码来确定哪种方法更好; %timeit将根据总共2秒的执行窗口自动计算代码所需的运行次数。


25
投票

这在iPython中被称为线魔术。它们的独特之处在于它们的参数只延伸到当前行的末尾,并且魔法本身实际上是用于命令行开发的。 timeit用于计算代码的执行时间。

如果你想看到你可以使用的所有魔法,你只需输入:

%lsmagic

获得线魔法和细胞魔法的列表。

来自文档here的一些进一步的魔术信息:

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

根据您是否处于行或单元模式,有两种不同的方法可以使用%timeit。您的问题说明了第一种方式:

In [1]: %timeit range(100)

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

4
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.