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

闲话少说~~~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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 @   平行时空的旅者  阅读(235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示