# coding:utf-8
import time
import functools
def cache(seconds=0):
def deco(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
value = getattr(func, 'value', None)
last = getattr(func, 'last', None)
if not value or not last or time.time() - last > seconds:
func.value = func(*args, **kwargs)
func.last = time.time()
return func.value
return wrapper
return deco
@cache(5)
def get(x):
time.sleep(3)
return x ** 2