使用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调用新浪微博API项目实践
Jul 28 Python
Python编程实现的图片识别功能示例
Aug 03 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
python实时获取外部程序输出结果的方法
Jan 12 Python
浅谈python标准库--functools.partial
Mar 13 Python
python set内置函数的具体使用
Jul 02 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
python实现代码统计程序
Sep 19 Python
Python实现CNN的多通道输入实例
Jan 17 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
一行代码python实现文件共享服务器
Apr 22 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
python解决字符串倒序输出的问题
2018/06/25 Python
对Tensorflow中的变量初始化函数详解
2018/07/27 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
Python 实现自动导入缺失的库
2019/10/29 Python
keras topN显示,自编写代码案例
2020/07/03 Python
Keras loss函数剖析
2020/07/06 Python
python利用线程实现多任务
2020/09/18 Python
python 线程的五个状态
2020/09/22 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
什么是封装
2013/03/26 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
销售实习自我鉴定
2013/12/07 职场文书
三好学生自我鉴定
2013/12/17 职场文书
员工培训邀请函
2014/02/02 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书