如何使用Python timeit模块捕获返回值?

如何使用Python timeit模块捕获返回值?,第1张

如何使用Python timeit模块捕获返回值?

问题归结为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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存