Skip to content

Commit 3b137ba

Browse files
committed
Use OrderedDict for FIFO for LRU
1 parent 9eb2fac commit 3b137ba

File tree

2 files changed

+56
-63
lines changed

2 files changed

+56
-63
lines changed

fastcore/xtras.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -748,8 +748,9 @@ def is_namedtuple(cls):
748748
def flexicache(*funcs, maxsize=128):
749749
"Like `lru_cache`, but customisable with policy `funcs`"
750750
import asyncio
751+
from collections import OrderedDict
751752
def _f(func):
752-
cache,states = {}, [None]*len(funcs)
753+
cache,states = OrderedDict(), [None]*len(funcs)
753754
def _cache_logic(key, execute_func):
754755
if key in cache:
755756
result,states = cache[key]
@@ -763,8 +764,7 @@ def _cache_logic(key, execute_func):
763764
cache[key] = cache.pop(key)
764765
return result
765766
cache[key] = (newres, [f(None) for f in funcs])
766-
# remove the oldest item when cache overflows
767-
if len(cache) > maxsize: del cache[next(iter(cache))]
767+
if len(cache) > maxsize: cache.popitem(last=False)
768768
return newres
769769

770770
@wraps(func)

0 commit comments

Comments
 (0)