def memoize(f):
'''
Memoization decorator
Parameters
----------
Returns
-------
'''
cache = {}
info = defaultdict(dict)
@robust_decorator
def wrapped(f,*args,**kwargs):
sig = argument_signature(f,*args,**kwargs)
if not sig in cache:
time,result = f(*args,**kwargs)
info[sig]['density'] = time/sys.getsizeof(result)
cache[sig] = result
return cache[sig]
wrapped.__cache__ = cache
wrapped.__info__ = info
return wrapped(timed(f))
评论列表
文章目录