Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import deque
- def cache(n):
- lru_cache = dict()
- order = deque()
- separator = object()
- def decorator(function):
- def wrapped(*args, **kwargs):
- nonlocal lru_cache, order
- key = args + (object,) + tuple(sorted(kwargs.items()))
- if lru_cache.get(key, None) is None:
- order.append(key)
- value = function(*args, **kwargs)
- lru_cache[key] = value
- if len(order) > n:
- del lru_cache[order[0]]
- order.popleft()
- else:
- return lru_cache[key]
- return wrapped
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement