码迷,mamicode.com
首页 > 编程语言 > 详细

Python模块学习之特殊函数 __call__ 的使用

时间:2017-10-28 14:32:04      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:*args   时间   style   实例   blog   rom   run   函数   elf   

博主在写自动化的过程中想计算每一个用例的运行时间

因为使用的POM模型,每一个用例都是一个函数,所以实际需要得到的是函数运行的时间

在每一个函数运行开始的时候打一个标记,结束的时候打一个标记可以得到结果,但是比较麻烦,所以想到了装饰器

在使用装饰器的时候,遇到了各种问题,都已经一一解决,最终代码如下:


#所有的函数都是可调用对象。
#使用__call__()函数可以将一个类实例也可以变成一个可调用对象

import
time from logging_save import logger class runtime_count(object): def __init__(self): pass def __call__(self,func): def _call(*args, **kw): begintime = time.clock() func(*args, **kw) end_time = time.clock() runtime = end_time -begintime logger.info(ran %s cost %.3f s % (func.__name__, runtime)) return _call class bss(object): @time_count() def runfunc(self): time.sleep(3) print runfunc running bs = bss() bs.runfunc()

Python模块学习之特殊函数 __call__ 的使用

标签:*args   时间   style   实例   blog   rom   run   函数   elf   

原文地址:http://www.cnblogs.com/Detector/p/7746798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!