您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

如何使用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 timeit
import time

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:
            retval = _func()
        _t1 = _timer()
        return _t1 - _t0, retval
    return inner

timeit._template_func = _template_func

def foo():
    time.sleep(1)
    return 42

t = timeit.Timer(foo)
print(t.timeit(number=1))

退货

(1.0010340213775635, 42)

一个值是时间结果(以秒为单位),第二个值是函数的返回值。

请注意,上面的Monkey-patch仅影响通过 callable@H_301_24@ 传递timeit时的行为。如果传递字符串语句,则必须(类似地)对字符串进行猴子修补。 __timeit.Timer``timeit.template

python 2022/1/1 18:36:45 有252人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶