使用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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
python清理子进程机制剖析
Nov 23 Python
python spyder中读取txt为图片的方法
Apr 27 Python
Python生成短uuid的方法实例详解
May 29 Python
python实现nao机器人手臂动作控制
Apr 29 Python
Python列表对象实现原理详解
Jul 01 Python
pytorch模型存储的2种实现方法
Feb 14 Python
Python使用qrcode二维码库生成二维码方法详解
Feb 17 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
Django实现聊天机器人
May 31 Python
Pytorch可视化的几种实现方法
Jun 10 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 SQLite类
2009/05/07 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
菜单效果
2006/10/14 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
python对字典进行排序实例
2014/09/25 Python
Python基于twisted实现简单的web服务器
2014/09/29 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
pytorch中的inference使用实例
2020/02/20 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
业务部经理岗位职责
2014/01/04 职场文书
中介业务员岗位职责
2014/04/09 职场文书
大学新闻系求职信
2014/06/03 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
2015年手术室工作总结
2015/05/11 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
新手入门Mysql--概念
2021/06/18 MySQL