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这两个全局变量,用在类装饰器里,就可以算一个总共运行时间或记录某几个方法执行的时间总和,从而分析性能瓶颈在哪
  • 相关阅读:
    SVN Windows环境搭建,简洁演示
    SVN-linux配置
    链接文本在a标签内标签里也可以用driver.find_element_by_link_text
    selenium python自动化简明演示
    关键字中mysql数据库查询条件带中文无结果解决办法
    python 最短路径
    python 难度分割
    c语言实现一个高铁乘客管理系统
    Linux(Ubuntu)系统安装图文教程
    字符串排序
  • 原文地址:https://www.cnblogs.com/slqt/p/5460598.html
Copyright © 2011-2022 走看看