• 使用python装饰器计算函数运行时间的实例


    使用python装饰器计算函数运行时间的实例

    装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率

    今天就来见识一下 python 装饰器,到底是怎么工作的。

    本文主要是利用python装饰器计算函数运行时间
    一些需要精确的计算函数运行了多久的程序,都可以采用这种方法    
    #coding:utf-8 
    import urllib2,re,time,random,os,datetime
    import HTMLParser
    import sys 
    reload(sys) 
    sys.setdefaultencoding('utf-8') 
      
    #计算时间函数 
    def print_run_time(func): 
     def wrapper(*args, **kw): 
      local_time = time.time() 
      func(*args, **kw) 
      print 'current Function [%s] run time is %.2f' % (func.__name__ ,time.time() - local_time) 
     return wrapper 
     
    class test:
        def __init__(self):
            self.url=''
        #获取网页页面内容
        #即装饰器不管参数有多少,都能使用
        @print_run_time
        def get_html(self,url):
            headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'}#设置header
            req = urllib2.Request(url=url,headers=headers)
            try:
                html = urllib2.urlopen(req).read().decode('utf-8')
                html=HTMLParser.HTMLParser().(html)#处理网页内容, 可以将一些html类型的符号如" 转换回双引号
                #html = html.decode('utf-8','replace').encode(sys.getfilesystemencoding())#转码:避免输出出现乱码
            except urllib2.HTTPError,e:
                print(2,u"连接页面失败,错误原因: %s" % e.code)
                return None
            except urllib2.URLError,e:
                if hasattr(e,'reason'):
                    print(2,u"连接页面失败,错误原因:%s" % e.reason)
                    return None
            return html
             
        #在类的内部使用装饰器
        @print_run_time
        def run(self):
            self.url='http://www.baidu.com'
            self.get_html(self.url)
            print 'end'
             
    #在外面直接使用装饰器
    @print_run_time
    def get_current_dir(spath):
        #spath=os.getcwd()
        #spath=os.path.abspath(os.curdir)
             
        for schild in os.listdir(spath): 
            schildpath=spath '/' schild 
            if os.path.isdir(schildpath): 
                get_current_dir(schildpath) 
            else: 
                print schildpath 
         
    if __name__ == '__main__':
        my_test=test()
        my_test.run()
        spath=os.path.abspath('.')
        get_current_dir(spath)

    运行结果:    
    current Function [get_html] run time is 0.29 
    end 
    current Function [run] run time is 0.29 
    05.python_study/03.decorator.py 
    current Function [get_current_dir] run time is 0.00

    以上这篇使用python装饰器计算函数运行时间的实例就是小编分享给大家的全部内容了

  • 相关阅读:
    javascript中this使用规律
    call和apply的作用和不同
    SVN的标准目录结构:trunk、branches、tags
    SVN 多人修改,如何管理 关于版本的问题
    公司考勤系统项目设计
    CDI Features
    Java Design Pattern
    公司考勤系统设计文件
    spring( history Design Philosophy )
    JSON/xml
  • 原文地址:https://www.cnblogs.com/amengduo/p/9586368.html
Copyright © 2020-2023  润新知