Discuss / Python / 解法:

解法:

Topic source

#请设计一个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__)


  • 1

Reply