问题归结为timeit._template_func不返回函数的返回值:
def _template_func(setup, func): """Create a timer function. Used if the "statement" is a callable.""" def inner(_it, _timer, _func=func): setup() _t0 = _timer() for _i in _it: _func() _t1 = _timer() return _t1 - _t0 return inner
我们可以
timeit通过一些猴子修补来屈服于我们的意愿:
import timeitimport timedef _template_func(setup, func): """Create a timer function. Used if the "statement" is a callable.""" def inner(_it, _timer, _func=func): setup() _t0 = _timer() for _i in _it: retval = _func() _t1 = _timer() return _t1 - _t0, retval return innertimeit._template_func = _template_funcdef foo(): time.sleep(1) return 42t = timeit.Timer(foo)print(t.timeit(number=1))
退货
(1.0010340213775635, 42)
第一个值是时间结果(以秒为单位),第二个值是函数的返回值。
请注意,上面的Monkey-patch仅影响通过 callable
传递
timeit时的行为。如果传递字符串语句,则必须(类似地)对字符串进行猴子修补。 __
timeit.Timer``timeit.template
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)