# limited cache, using brute-force LRU implementation. this is surprisingly # efficient, especially for small caches (i.e. a few hundred items) class Cache: def __init__(self, maxsize=100): self.cache = {} self.order = [] # least recently used first self.maxsize = maxsize def size(self): return len(self.cache) def get(self, key): value = self.cache[key] self.order.remove(key) self.order.append(key) return value def set(self, key, value): if self.cache.has_key(key): self.order.remove(key) elif len(self.cache) >= self.maxsize: del self.cache[self.order.pop(0)] self.cache[key] = value self.order.append(key) if __name__ == "__main__": import test test.simple(Cache)