user1420913
user1420913

Reputation: 427

How to improve a simple caching mechanism in Python?

just registered so I could ask this question.

Right now I have this code that prevents a class from updating more than once every five minutes:

now = datetime.now()
delta = now - myClass.last_updated_date
seconds = delta.seconds

if seconds > 300
    update(myClass)     
else
    retrieveFromCache(myClass)

I'd like to modify it by allowing myClass to update twice per 5 minutes, instead of just once.

I was thinking of creating a list to store the last two times myClass was updated, and comparing against those in the if statement, but I fear my code will get convoluted and harder to read if I go that route.

Is there a simpler way to do this?

Upvotes: 0

Views: 106

Answers (1)

Nix
Nix

Reputation: 58622

You could do it with a simple counter. Concept is get_update_count tracks how often the class is updated.

if seconds > 300 or get_update_count(myClass) < 2:
    #and update updatecount
    update(myClass)     
else:
    #reset update count
    retrieveFromCache(myClass)

Im not sure how you uniquely identify myClass.

update_map = {}

def update(instance):
     #do the update
     update_map[instance] = update_map.get(instance,0)+1

def get_update_count(instance):
     return update_map[instance] or 0

Upvotes: 1

Related Questions