服务器之家

服务器之家 > 正文

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

时间:2021-02-03 00:47     来源/作者:枫奇

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

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

本文主要是利用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
58
59
60
61
62
#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().unescape(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)

运行结果:

?
1
2
3
4
5
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装饰器计算函数运行时间的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/qiqiyingse/article/details/71172347

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部

1230
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40