如何在Python中改进简单的缓存机制?

时间:2013-01-30 23:53:18

标签: python caching

刚注册,所以我可以问这个问题。

现在我有这个代码可以阻止一个类每五分钟更新一次:

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

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

我想通过允许myClass每5分钟更新两次而不是只修改一次来修改它。

我正在考虑创建一个列表来存储myClass最后两次更新,并与if语句中的那些进行比较,但我担心如果我走这条路线,我的代码会变得复杂和难以阅读。

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

你可以用一个简单的计数器来做。概念是get_update_count跟踪课程更新的频率。

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

我不确定您如何唯一地识别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