def __del__(self):
self.clear() # eliminate cyclical references
+ def _move_to_end(self, key, PREV=0, NEXT=1):
+ 'Fast version of self[key]=self.pop(key). Private method for internal use.'
+ link = self.__map[key]
+ link_prev = link[PREV]
+ link_next = link[NEXT]
+ link_prev[NEXT] = link_next
+ link_next[PREV] = link_prev
+ root = self.__root
+ last = root[PREV]
+ link[PREV] = last
+ link[NEXT] = root
+ last[NEXT] = root[PREV] = link
+
################################################################################
### namedtuple
try:
with lock:
result = cache[key]
- del cache[key]
- cache[key] = result # record recent use of this key
+ cache._move_to_end(key) # record recent use of this key
wrapper.hits += 1
except KeyError:
result = user_function(*args, **kwds)