使用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通过pil模块获得图片exif信息的方法
Mar 16 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
python计算对角线有理函数插值的方法
May 07 Python
python实现发送邮件及附件功能
Mar 02 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
Jul 13 Python
mac 安装python网络请求包requests方法
Jun 13 Python
python实现一个简单的ping工具方法
Jan 31 Python
利用python将图片版PDF转文字版PDF
May 03 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
php class类的用法详细总结
2013/10/17 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
vue内置指令详解
2018/04/03 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
自学考试自我鉴定范文
2013/09/26 职场文书
道德模范先进事迹
2014/02/14 职场文书
节能标语大全
2014/06/21 职场文书
实施意见格式范本
2015/06/05 职场文书
爱护公物主题班会
2015/08/17 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python