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


Posted in Python onApril 21, 2018

装饰器在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().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)

运行结果:

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装饰器计算函数运行时间的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
python2.7到3.x迁移指南
Feb 01 Python
Python实现二维数组输出为图片
Apr 03 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
使用python实现滑动验证码功能
Aug 05 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Python和Sublime整合过程图示
Dec 25 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
Python实现淘宝秒杀功能的示例代码
Jan 19 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 #Python
Python 实现一行输入多个值的方法
Apr 21 #Python
Python实现接受任意个数参数的函数方法
Apr 21 #Python
深入分析python数据挖掘 Json结构分析
Apr 21 #Python
Python编程中NotImplementedError的使用方法
Apr 21 #Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 #Python
python 限制函数调用次数的实例讲解
Apr 21 #Python
You might like
使用php的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
python写入xml文件的方法
2015/05/08 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
校园门卫岗位职责
2013/12/09 职场文书
中专生自我鉴定
2013/12/17 职场文书
销售经理工作职责
2014/02/03 职场文书
国培教师自我鉴定
2014/02/12 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
税务会计岗位职责
2015/04/02 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书