Optimize a cache

F

Florian Lindner

Hello,
I am building a object cache in python, The cache has a maximum size and the
items have expiration dates.
At the moment I'm doing like that:

cache = {} # create dictionary

cache[ID] = (object, timestamp) # Save a tuple with the object itself and a
timestamp (from datetime.datetime.now()) under a unique object ID. This
make looking up a certain item a cheap operation (AFAIK). After looking up
my program checks if the expiration date and returns cache[ID][1] or
retrieve a new object and overwrite the one saved in the cache.

My problem now:
When len(cache) > cacheSize I need to remove the oldest objects (the ones
with the smalest timestamp). For that I need to iterate through all items
and get the oldest one: (pseudo code)

oldest = datetime.datetime.now()

for i in cache:
if i[1] < a:
id = i
n = i[0]

del cache[id]


What possible you see to optimize this lookup? Or anything else you see to
make it better?

Thanks,

Florian
 
P

Paul Rubin

Florian Lindner said:
What possible you see to optimize this lookup? Or anything else you see to
make it better?

Do you need to update the timestamp of cached entries when you access
them? If yes, use the heapq module. If no, is the cache something
different from a simple FIFO?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,259
Messages
2,571,295
Members
47,931
Latest member
alibsskamoSeAve

Latest Threads

Top