python中的timeit模块无法识别numpy模块

use*_*991 11 python numpy timeit

我想测试两个相同列表之间的处理时间,特别是正常列表和numpy列表.我的代码是

import timeit
import numpy as np

t = timeit.Timer("range(1000)")
print t.timeit()

u = timeit.Timer("np.arange(1000)")
print u.timeit()
Run Code Online (Sandbox Code Playgroud)

计算t很好,但对于uNameError:未列出全局名称'np'.

我应该如何编码以获得处理时间?

aba*_*ert 15

timeit.Timer课程可以两种不同的方式使用.

它可以将源代码编译为已执行 - 在这种情况下,代码在只setup运行代码的新环境中执行,或者它可以采用可调用的,在这种情况下可调用的是可调用的(在您的当前环境,像任何其他可调用的).

所以,你有两个选择:

u = timeit.Timer("np.arange(1000)", setup='import numpy as np')
Run Code Online (Sandbox Code Playgroud)

… 要么 …

u = timeit.Timer(lambda: np.arange(1000))
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,你碰巧做了一件事import numpy as np是无关紧要的; 它对np.arange(1000)编译和执行的环境没有影响(因此你必须将它包含setup=...在位中).

在第二种情况下,您import numpy as np显然已经完成的事实相关的 - 它会影响您的代码(包括代码)的lambda: np.arange(1000)评估环境.


ndp*_*dpu 5

使用setup参数:

u = timeit.Timer("np.arange(1000)", setup='import numpy as np')
Run Code Online (Sandbox Code Playgroud)