Python: 使用装饰器“@”取得函数执行时间
class A():
Python: 使用装饰器“@”取得函数执行时间 - oldJ的学习笔记 - 博客频道 - CSDN.NET
Python: 使用装饰器“@”取得函数执行时间
分类: Python 2009-10-14 12:53 752人阅读 评论(0) 收藏 举报
Python中可以使用装饰器对函数进行装饰(或说包装),利用这个特性,可以很方便、简洁地解决一些问题,比如获得函数执行时间的问题。
首先,我们定义一个函数,如下:
[python] view plaincopyprint?
def exeTime(func):
def newFunc(*args, **args2):
t0 = time.time()
print "@%s, {%s} start" % (time.strftime("%X", time.localtime()), func.__name__)
back = func(*args, **args2)
print "@%s, {%s} end" % (time.strftime("%X", time.localtime()), func.__name__)
print "@%.3fs taken for {%s}" % (time.time() - t0, func.__name__)
return back
return newFunc当然,不要忘了“import time”导入time模块。这个函数就可以用作我们计算函数执行时间的修饰器了。
接下来,我们就可以在需要计时的函数前一行引用它作为装饰,比如:
[python] view plaincopyprint?
@exeTime
def foo():
for i in xrange(10000000):
pass注意最上方的“@exeTime ”,装饰器的语法以“@”开头,接着是装饰函数,在本例中为“exeTime”。这时,执行函数foo,装饰器就会在控制台打印出这个函数的执行时间了。
完整代码如下:
[python:collapse] + expand sourceview plaincopyprint?
# -*- coding: utf-8 -*-
import time
# --exeTime
def exeTime(func):
def newFunc(*args, **args2):
t0 = time.time()
print "@%s, {%s} start" % (time.strftime("%X", time.localtime()), func.__name__)
back = func(*args, **args2)
print "@%s, {%s} end" % (time.strftime("%X", time.localtime()), func.__name__)
print "@%.3fs taken for {%s}" % (time.time() - t0, func.__name__)
return back
return newFunc
# --end of exeTime
@exeTime
def foo():
for i in xrange(10000000):
pass
if __name__ == "__main__":
foo()在笔者电脑上的运行结果为:
@13:12:27, {foo} start
@13:12:27, {foo} end
@0.203s taken for {foo}当然,上面只是一个很简单的示例,事实上,本例中的装饰器exeTime不仅可以装饰类似上面“foo”这样不带参数的函数,也能装饰带任意参数的函数,甚至还可以装饰类的方法,用法与上面是一样的。
除了计算运行时间外,装饰器还可以有很多用途,比如记录运行日志等,更多的用途等待更多的朋友去发掘。
Python: 使用装饰器“@”取得函数执行时间相关推荐
- python装饰器函数-Python精进-装饰器与函数对象
本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...
- python装饰器打印函数执行时间_python装饰器计算函数执行时间
原博文 2020-04-26 13:47 − import time import logging from functools import wraps import datetime log = ...
- python 类装饰器和函数装饰器区别_python进阶之装饰器之4在类中定义装饰器,将装饰器定义为类,两者的区别与联系...
# 把装饰器定义为类 # 定义中需要实现__call__(),__get__() 方法 import types from functools import wraps class Profiled: ...
- python万能装饰器实现计算函数的调用次数和执行时间
直接上代码 # python万能装饰器实现计算函数的调用次数和执行时间 import timedef set_fun(func):num = 0 # 初始化次数def call_fun(*args, ...
- python函数装饰函数_Python精进-装饰器与函数对象
本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...
- 使用python装饰器计算函数运行时间的实例
装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是利用python装饰器计算函数运行时间 一些需 ...
- python 运行时间 装饰器_python 装饰器统计某个函数的运行时间
import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...
- python计算时间装饰器_使用python装饰器计算函数运行时间的实例
装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是利用python装饰器计算函数运行时间 一些需 ...
- Python 没有函数重载?如何用装饰器实现函数重载?
摘要:Python 不支持函数重载.当我们定义了多个同名的函数时,后面的函数总是会覆盖前面的函数,因此,在一个命名空间中,每个函数名仅会有一个登记项(entry). 本文分享自华为云社区<为什么 ...
最新文章
- 普京谈“元宇宙”:这无疑是一种挑战
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
- List有关知识与ArrayList的实现
- 基于VUE只是作为模版引擎的前后端分离
- 前端周刊第58期:送你 3 道面试题
- 深入理解for循环(执行顺序)
- 复旦nlp实验室 nlp-beginner 任务三:基于注意力机制的文本匹配
- 软件工程-可行性分析
- 小程序毕设作品之微信校园维修报修小程序毕业设计成品(7)中期检查报告
- 我与CSDN的2021 --从路人到一名万粉博主的自述
- python基础知识相关习题
- 协议僵化 or 协议僵化
- 【linux】运行run文件显示cannot execute binary file
- Magento 数据表结构 EAV模型详解
- Android转场动画(View Activity ARouter)
- 过去的互联网,modnet的出现
- warning: function returns address of local variable(函数参数返回错误)
- 【光通信】参数'G'和'GE’的技术实现区别
- AC/DC 反激 (Flyback) 控制器
- NJUPT 《信安数基》第 11 章解题攻略
热门文章
- VIM使用系列之一——配置VIM下编程和代码阅读环境
- C++(8)--数组及常用算法
- java学习_Python基础学习教程:从0学爬虫?让爬虫满足你的好奇心
- Java JUC工具类--CountDownLatch
- C++回调函数(callback)的使用
- 解决:Dockerfile 中执行 tar 命令始终报错:tar: /xx/xx: Cannot stat: No such file or directory tar: Exiting with
- 解决: Failed to execute ... maven-deploy-plugin... Return code is: 401, ReasonPhrase: Unauthorized.
- 「日常训练」 Genghis Khan the Conqueror(HDU-4126)
- 2017.9.5 postgresql加密函数的使用
- chrome用type=file获取图片路径并转base64字符串