from collections import deque class FrameCache: def __init__(self,capacity=600): # 600 is enough for 10 min of 1 fps self._capacity=capacity self._keys=deque() self._values=dict() self._i=0 def put(self,item): self._i+=1 if len(self._keys)>=self._capacity: k=self._keys.popleft() del self._values[k] self._values[self._i]=item self._keys.append(self._i) return self._i def get(self,k): return self._values.get(k) def getRelative(self,k): return (self._keys[k], self._values[self._keys[k]])