zoukankan      html  css  js  c++  java
  • 计算类或普通函数执行时间的装饰器

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

    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

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

    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
    

    使用类装饰器:

    @__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
    

    使用函数装饰器:

    @__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
    

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

    S_T,E_T这两个全局变量,用在类装饰器里,就可以算一个总共运行时间或记录某几个方法执行的时间总和,从而分析性能瓶颈在哪
  • 相关阅读:
    ios lazying load
    ios 单例模式
    ios 消息推送原理
    C#图片闪烁
    C#使窗体不显示在任务栏
    实时监测鼠标是否按下和鼠标坐标
    winfrom窗体的透明度
    C#获取屏幕的宽度和高度
    HDU 5171 GTY's birthday gift 矩阵快速幂
    HDU 5170 GTY's math problem 水题
  • 原文地址:https://www.cnblogs.com/slqt/p/5460598.html
Copyright © 2011-2022 走看看