Advertisement
MathQ_

Untitled

Oct 24th, 2022
1,013
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.66 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.             if lru_cache.get(key, None) is None:
  14.                 order.append(key)
  15.                 value = function(*args, **kwargs)
  16.                 lru_cache[key] = value
  17.                 if len(order) > n:
  18.                     del lru_cache[order[0]]
  19.                     order.popleft()
  20.             else:
  21.                 return lru_cache[key]
  22.  
  23.         return wrapped
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement