导航

< 2025年1月 >
29 30 31 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 1
2 3 4 5 6 7 8
统计
 

计算类执行时间的装饰器:

def __recordTimeClass(aClass):
class newClass():
def __init__(self):
self.CS_T = datetime.datetime.now()
self.wrapped= aClass()
self.CE_T = datetime.datetime.now()
def __scrDownload(self,url, minionid):
S_T=datetime.datetime.now()
results=self.wrapped.__scrDownload(url, minionid)
E_T=datetime.datetime.now()
return results

def executeScripts(self, params):
S_T = datetime.datetime.now()
a,b,c = self.wrapped.executeScripts(params)
E_T = datetime.datetime.now()
return a,b,c#,S_T,E_T
return newClass

计算普通函数执行时间的装饰器:

1
2
3
4
5
6
7
8
9
10
11
12
def __recordTime():
    '''
    record the run time of a function
    '''
    def resFunc(func):
        def _resFunc(*args,**kwargs):
            S_T =datetime.datetime.now()
            results=func(*args,**kwargs)
            E_T =datetime.datetime.now()
            return results#,S_T,E_T
        return _resFunc
    return resFunc

使用类装饰器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@__recordTimeClass
class __TryParams():
    def __init__(self):
        self.failure_minions={}
        self.success_minions={}
        self.script_lists = []
        self.download_script_lists = []
    def executeScripts(self,params):
        '''
        :param: params{"url":"","minionid":"","parameter":{}}
        :return:
        '''
        global OPT_PATH
        a=b=c=1
        return a,b,c

使用函数装饰器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@__recordTime()
def __readScript(file_path):
    '''
    #!# exec_module.py
    get the destination path to save the script file
    '''
    lists=[]
    try:
        with open(file_path, 'r') as f:
            lines=f.readlines()
            for i in range(0,len(lines)):
                if lines[i].startswith("#!# need"):
                    lists.append(lines[i])
    except IOError,e:
        log.debug(e)
        return None
    return lists

重要的在于灵活运用,比如

1
S_T,E_T这两个全局变量,用在类装饰器里,就可以算一个总共运行时间或记录某几个方法执行的时间总和,从而分析性能瓶颈在哪

 

posted on   slqt  阅读(370)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
阅读排行:
· 盘点!HelloGitHub 年度热门开源项目
· DeepSeek V3 两周使用总结
· 02现代计算机视觉入门之:什么是视频
· C#使用yield关键字提升迭代性能与效率
· 2. 什么?你想跨数据库关联查询?
 
点击右上角即可分享
微信分享提示