您的位置:首页 > 编程语言 > Python开发

python实现编写一个@performance,它可以打印出函数调用的时间。

2016-04-24 15:11 831 查看
问题:

    请编写一个@performance,它可以打印出函数调用的时间。

解题分析:

   此题的目的有两个一个是使用装饰器@...,二是求出开始调用函数的时间t_start,与结束调用函数的时间t_end。求中间的时间差,并打印出来。

code:

# -*- coding: utf-8 -*-
#杨鑫
import time
def performance(f):                                                 #定义装饰器函数,功能是传进来的函数进行包装并返回包装后的函数
def fn(*args, **kw):                                            #对传进来的函数进行包装的函数
t_start = time.time()                                       #记录函数开始时间
r = f(*args, **kw)                                          #调用函数
t_end = time.time()                                         #记录函数结束时间
print 'call %s() in %fs' % (f.__name__, (t_end - t_start))  #打印调用函数的属性信息,并打印调用函数所用的时间
return r                                                    #返回包装后的函数
return fn                                                       #调用包装后的函数

@performance                                                        #调用装饰器
def factorial(n):                                                   #定义乘数函数
return reduce(lambda x, y: x * y, range(1, n + 1))
print factorial(10)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: