python装饰器带参数和方法带参数的处理

闲话少说~~~

from CustomLogger import mylog
from time import sleep, time
import functools

"""
    装饰器带参数和方法带参数实现,统计方法执行时间
"""

log =mylog().get_log()

list={}
doc = {}
def setup(name):
    """setup"""
    def opp(func):
        """opp"""
        @functools.wraps(func)  # 不加该装饰器,funcA.__doc__ == op 。加了后 funcA才显示本身的doc属性
        def op(*args, **kwargs):
            """op"""
            testName=name
            log.info("Test Item :[%s] Begin" % testName)
            starttime=time()

            func(*args, **kwargs)

            endtime=time()
            timeuse=endtime-starttime
            log.info("用时:%s" % int(timeuse))
            list[func.__name__] = int(timeuse)
            doc[func.__doc__] = func.__doc__

        return op
    return opp


@setup('测试A')
def funcA(a,b):
    """this A"""
    log.info('这是方法A里面的操作')
    sleep(1)
    print('end')
    print(a+b)


@setup("测试B")
def funcB(a):
    """this B"""
    log.info('这是方法B里面的操作')
    sleep(2)
    print('end')
    print(a)

funcA(4,5)
funcB("hi")
log.info(list)
log.info(doc)
print(funcA.__doc__)

  

posted @ 2022-05-18 16:45  平行时空的旅者  阅读(232)  评论(0编辑  收藏  举报