Python3.6如何衡量执行时间

时间:2019-10-26 12:40:29

标签: performance python-3.6 execution-time

我正在尝试创建一种通用方法来测量大多数“硬”功能的执行时间。

为此,我希望创建一个类似于以下内容的装饰器:

def timeit(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        logger.info(f"Execution time for {func.__name__} is {time.time() - start} seconds")
        return result
    return wrapper

@timeit
async def some_func():
    # Function body

这里的主要问题是-此代码是同步的,效果不是很好。

我也试图做类似的事情:

def timeit():
    def wrapper(func):
        @wraps(func)
        async def wrapped(*args, **kwargs):
            start = time.time()
            logger.info(f"Starting {func.__name__}...")
            return await func(*args)
            end = time.time() - start
            logger.info(f"Completed {func.__name__} in {} seconds")
        return wrapped
    return wrapper

这里有一些问题:

1)start时间不完全是开始时间,而是函数已添加到异步循环的时间

2)由于return语句,我不会获得有关完成功能的信息。

为避免此项目,我可能尝试使用run_until_complete,但不确定这种装饰器是否可以使用。

我在Google上搜索了很多,但是找不到用于衡量执行时间的通用方法。

我们如何测量执行时间并将此信息提供到日志中以便于调查/调试?

0 个答案:

没有答案