In [10]:
from functools import wraps
from datetime import datetime as dt
import time
import random

In [19]:
def timefn(fn):
    @wraps(fn)
    def measure_time(*args, **kwargs):
        t1 = dt.now()
        result = fn(*args, **kwargs)
        t2 = dt.now()
        print "@timefn: {} took {} seconds".format(fn.func_name, str(t2-t1))
        return result
    return measure_time

In [20]:
@timefn
def random_delay():
    t = random.random()
    time.sleep(t)
    return t

In [21]:
random_delay()


@timefn: random_delay took 0:00:00.522000 seconds
Out[21]:
0.5081170469886653

In [ ]: