MathQ_

Untitled

Oct 24th, 2022
954
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.71 KB | None | 0 0
  1. from collections import deque
  2.  
  3.  
  4. def cache(n):
  5.     lru_cache = dict()
  6.     order = deque()
  7.     separator = object()
  8.  
  9.     def decorator(function):
  10.         def wrapped(*args, **kwargs):
  11.             nonlocal lru_cache, order
  12.             key = args + (object,) + tuple(sorted(kwargs.items()))
  13.             print(key)
  14.             if lru_cache.get(key, None) is None:
  15.                 order.append(key)
  16.                 value = function(*args, **kwargs)
  17.                 lru_cache[key] = value
  18.                 if len(order) > n:
  19.                     del lru_cache[order[0]]
  20.                     order.popleft()
  21.             else:
  22.                 return lru_cache[key]
  23.  
  24.         return wrapped
  25.  
  26.     return decorator
Advertisement
Add Comment
Please, Sign In to add comment