Python 带数字的timeit和不带数字的timeit之间不一致

Python 带数字的timeit和不带数字的timeit之间不一致,python,numpy,sympy,timeit,Python,Numpy,Sympy,Timeit,我注意到,在运行带有规则数组的timeit和参数编号为1的timeit之间,结果变化很快。这是我找到的例子 import sympy as sp import numpy as np var = (sp.Symbol("x"), sp.Symbol("y"), sp.Symbol("z")) x,y,z = var[0], var[1], var[2] monos = np.array([1, z, y, x, z**2, y*z, y**2, x*z, x*y, x**2, z**3, y*z

我注意到,在运行带有规则数组的timeit和参数编号为1的timeit之间,结果变化很快。这是我找到的例子

import sympy as sp
import numpy as np
var = (sp.Symbol("x"), sp.Symbol("y"), sp.Symbol("z"))
x,y,z = var[0], var[1], var[2]
monos = np.array([1, z, y, x, z**2, y*z, y**2, x*z, x*y, x**2, z**3, y*z**2, y**2*z, y**3, x*z**2, x*y*z, x*y**2, x**2*z, x**2*y, x**3, z**4, y*z**3, y**2*z**2, y**3*z, y**4, x*z**3, x*y*z**2, x*y**2*z, x*y**3, x**2*z**2, x**2*y*z, x**2*y**2, x**3*z, x**3*y, x**4])
f = sp.lambdify(var, monos)
import testit
timeit.timeit("(f(2,3,4))", setup="from __main__ import f") 
#returns 2.0760600566864014
timeit.timeit("(f(2,3,4))", setup="from __main__ import f", number=1)
#returns 1.5974044799804688e-05

我正在使用python2版本2.7.12和sympy版本1.2。这里发生了什么?

与IPython%timeit不同,
timeit.timeit
返回所有运行所花费的总时间。要获得单个跑步的时间,必须除以数字。您还可以使用
timeit.Timer(stmt).autorange()
(仅限Python 3.6+),它会自动选择一些运行


我建议使用IPython
%timeit
进行计时。它只以交互方式工作,但比标准库中的
timeit
模块更易于使用

那么,不管传递给它的参数是什么,您是否希望这个函数完全一样工作?你看过报纸了吗?他们对数字参数怎么说?