• python计算程序执行时间的装饰器使用


    1、经常被问程序执行了多久,每个函数都去写很麻烦,所以打算写个装饰器自动计算程序执行时间;推荐文档,大多数基础题都有:  https://python3-cookbook.readthedocs.io/zh_CN/latest/ 

    import  time

    def clock(func):
    def clocked(*args, **kwargs):
    start = time.time()
    result = func(*args, **kwargs)
    end = time.time()
    print(func.__name__, end - start)
    return result
    return clocked

    @clock
    def test():
    print("excute...")
    time.sleep(5)

    test()
    执行结果:

    "D:Program Filespython3.6.7python.exe" D:/pythonWorkspace/untitled4/22.py
    excute...
    test 5.000607967376709

    Process finished with exit code 0

    2、装饰器错误使用方法

    import datetime
    import time

    def clock(func):
    start = datetime.datetime.now()
    print(start)
    def clocked(*args, **kwargs):
    func(*args, **kwargs)
    end = datetime.datetime.now()
    total = (end - start).total_seconds()
    print(end)
    print("执行%s耗时:%d" %(func.__name__, total))
    return clocked

    @clock
    def test():
    print("excute...")
    time.sleep(5)

    test()
    错误的执行结果:

    "D:Program Filespython3.6.7python.exe" D:/pythonWorkspace/untitled4/55.py
    2019-08-19 10:24:29.904106
    2019-08-19 10:24:29.904106
    执行test耗时:0
    excute...

    Process finished with exit code 0

    -------------------------------------------------------------------------------------

    适用于例如:

      - 验证用户类型

    复制代码
    def user_auth(user_group):
        def wrapper(func):
            def inner(*args, **kwargs):
                if user_group == 'SVIP':
                    print('Dear SVIP')
                    res = func(*args, **kwargs)
                    return res
    
                elif user_group == 'General':
                    res = func(*args, **kwargs)
                    return res
    
                else:
                    print('Please login first!')
                    login()
    
            return inner
    
        return wrapper
    
    
    @user_auth(user_group='SVIP')
    def welcome():
        print('Welcome to the index')
  • 相关阅读:
    weblogic12c 2021.4.20 季度补丁 SPB
    一顿debug猛如虎,原来内存OOM
    JDK记录一下
    213. 打家劫舍 II-动态规划-中等
    5526. 最多可达成的换楼请求数目-回溯-困难
    1584. 连接所有点的最小费用-图/最小生成树-中等
    Java-泛型的限制
    Java-泛型-桥方法
    889. 根据前序和后序遍历构造二叉树-树-中等
    1109. 航班预订统计-差分数组-中等
  • 原文地址:https://www.cnblogs.com/harryTree/p/11375604.html
Copyright © 2020-2023  润新知