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)评估环境.
使用setup参数:
u = timeit.Timer("np.arange(1000)", setup='import numpy as np')
Run Code Online (Sandbox Code Playgroud)