#请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:
# -*- coding: utf-8 -*-
import time, functools
def metric(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
statr_time=time.time()
func=fn(*args, **kw) #调用的结果应该用一个变量存起来,然后return这个变量的值,避免返回结果额外的调用。
end_time=time.time()
print('%s executed in %s ms' % (fn.__name__,end_time-statr_time ))
return func
return wrapper
# 测试
@metric
def fast(x, y):
time.sleep(0.0012)
return x + y;
def slow(x, y, z):
time.sleep(0.1234)
return x * y * z;
f = fast(11, 22)
s = slow(11, 22, 33)
if f == 33:
print('测试成功!')
elif s != 7986:
print('测试失败!')
print(fast.__name__)
print(slow.__name__)
Sign in to make a reply
小桥流水_cc
#请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:
# -*- coding: utf-8 -*-
import time, functools
def metric(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
statr_time=time.time()
func=fn(*args, **kw) #调用的结果应该用一个变量存起来,然后return这个变量的值,避免返回结果额外的调用。
end_time=time.time()
print('%s executed in %s ms' % (fn.__name__,end_time-statr_time ))
return func
return wrapper
# 测试
@metric
def fast(x, y):
time.sleep(0.0012)
return x + y;
@metric
def slow(x, y, z):
time.sleep(0.1234)
return x * y * z;
f = fast(11, 22)
s = slow(11, 22, 33)
if f == 33:
print('测试成功!')
elif s != 7986:
print('测试失败!')
print(fast.__name__)
print(slow.__name__)