1, Python时间装饰器_BurningSilence的博客-CSDN博客_python 时间装饰器

from functools import wraps
import time


# time装饰器
def timer(func):
    @wraps(func)
    def wrap(*args, **kwargs):
        begin_time = time.perf_counter()
        result = func(*args, **kwargs)
        start_time = time.perf_counter()
        print('func:%r args:[%r, %r] took: %2.4f sec' % (func.__name__, args, kwargs, start_time - begin_time))
        return result

    return wrap


@timer
def waste_some_time(num):
    my_list = []
    for i in range(num):
        my_list.append(i)
    return my_list


if __name__ == '__main__':
    arr = waste_some_time(1000)
    print(arr)

2,python 函数执行时间装饰器_Charlie.Cheung的博客-CSDN博客_python 时间装饰器

import time


def timeit(func):
    def wrapper(*args, **kwargs):
        name = func
        for attr in ('__qualname__', '__name__'):
            if hasattr(func, attr):
                name = getattr(func, attr)
                break

        print("Start call: {}".format(name))
        now = time.time()
        result = func(*args, **kwargs)
        using = (time.time() - now) * 1000
        msg = "End call {}, using: {:.1f}ms".format(name, using)
        print(msg)
        return result
    return wrapper


@timeit
def hello_world():
    time.sleep(2)
    print('hello world')

    
if __name__ == '__main__':
    hello_world()

3,python实现计时器(装饰器) - 走看看

import time

#  装饰器run_time,@run_time加在谁头上,谁就是参数fun
def run_time(fun):

    start_time = time.time()
    fun()
    end_time = time.time()

    print("程序运行时间为:{} 秒".format(str(round((end_time - start_time), 1))))
    return end_time - start_time

#  耗时任务task
@run_time
def task():
    time.sleep(3)

4,打印当前时间的装饰器

import time
def func_time(func):
    def inner(*args,**kw):
        now_time = time.localtime()
        print('函数开始运行的时间为:',time.strftime('%Y:%m:%d %H:%M:%S',now_time))
        func(*args,**kw)
    return inner

@func_time
def sum(x,y):
    print(x,y)
sum(4,7)

#运行结果
函数开始运行的时间为:2018:11:23 14:36:59
11

5,函数运行总时间的装饰器

import time

def func_time(func):
    def inner(*args,**kw):
        start_time = time.time()
        func(*args,**kw)
        end_time = time.time()
        print('函数运行时间为:',end_time-start_time,'s')
    return inner

@func_time
def sum(x):
    for i in range(1,x+1):
        for j in range(1,i+1):
            print(j,'*', i, '=',i*j,end='   ')
        print()
sum(9)

1 * 1 = 1   
1 * 2 = 2   2 * 2 = 4   
1 * 3 = 3   2 * 3 = 6   3 * 3 = 9   
1 * 4 = 4   2 * 4 = 8   3 * 4 = 12   4 * 4 = 16   
1 * 5 = 5   2 * 5 = 10   3 * 5 = 15   4 * 5 = 20   5 * 5 = 25   
1 * 6 = 6   2 * 6 = 12   3 * 6 = 18   4 * 6 = 24   5 * 6 = 30   6 * 6 = 36   
1 * 7 = 7   2 * 7 = 14   3 * 7 = 21   4 * 7 = 28   5 * 7 = 35   6 * 7 = 42   7 * 7 = 49   
1 * 8 = 8   2 * 8 = 16   3 * 8 = 24   4 * 8 = 32   5 * 8 = 40   6 * 8 = 48   7 * 8 = 56   8 * 8 = 64   
1 * 9 = 9   2 * 9 = 18   3 * 9 = 27   4 * 9 = 36   5 * 9 = 45   6 * 9 = 54   7 * 9 = 63   8 * 9 = 72   9 * 9 = 81   
函数运行时间为: 0.0009999275207519531 s

6,https://www.jb51.net/article/237300.htm

# 涉及到计时,需要引入time模块
import time
# 定义一个对函数运行耗时统计的计时器,用func作为形参来代替需要统计的函数
def time_master(func):
    def call_func():
        print("计时器开始:函数开始调用:")
        start_time = time.time()
        func()
        end_time = time.time()
        print('计时器结束,函数调用完成')
        return print(f'计时器结果返回:函数调用耗时{end_time-start_time:.2f}')
    return call_func
@time_master
# 即在调用myfunc函数时,不是直接调用myfunc
# 而是将myfunc函数作为一个参数放入到@的装饰器中,然后去调用装饰器
def myfunc():
    time.sleep(2)
    print('myfunc函数运行')
    time.sleep(4)
    print('myfunc函数运行结束')
myfunc()  # 调用myfunc

以上都是抄写与整理,学习中...

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐