首页 > 技术文章 > python---输出函数运行时间的装饰器

KX-Lau 2020-03-11 12:42 原文

"""
装饰器: 不改变原函数的调用方式和函数的前提下, 增加额外的功能, 其本质就是一个闭包

---输出函数的运行时间
"""
import time
from functools import wraps


def get_running_time(func):

    # 使用wraps, 保证被装饰过的函数__name__的属性不变
    @wraps(func)
    def inner(*args, **kwargs):
        start_time = time.time()
        res = func(*args, **kwargs)
        end_time = time.time()
        print('the {} running time is {}'.format(func.__name__, (end_time - start_time)))

        return res

    return inner


@get_running_time
def run1000000():
    lst = []
    for i in range(1000000):
        lst.append(i)

    return lst


@get_running_time
def run1000000_2():
    return [i for i in range(1000000)]


run1000000()
run1000000_2()


# 运行结果
# the run1000000 running time is 0.16900038719177246
# the run1000000_2 running time is 0.09100198745727539

推荐阅读