2012-12-15 122 views
2

我有一个库,它将一些REST API映射到某个对象模型。所以使用API​​很容易。问题是每次我得到某个对象的属性时,库都会向服务器发出实际的请求。从性能角度来看这并不好。Python自动备忘录

我想要的是添加记忆属性值一段时间(比如说5分钟)的功能,并且仅在数据过期时才进行实际请求。

问题是有可能在不改变库代码的情况下做到这一点?例如使用装饰器或类似的东西。

+0

可能的重复[什么是memoization,我怎么用它在Python?](http://stackoverflow.com/questions/1988804/what-is-memoization-and-how-can-i-use-it-in-python) – lesmana

回答

1

你想使用称为'memoizing'的技术;我10S谷歌搜索给了我另一个SO链接, What is memoization and how can I use it in Python?

factorial_memo = {} 
def factorial(k): 
    if k < 2: return 1 
    if not k in factorial_memo: 
     factorial_memo[k] = k * factorial(k-1) 
    return factorial_memo[k] 

但是你DONOT在该行

if not k in factorial_memo: 

检查会员,你需要超时处理程序 -

if (curr - prev) < fiveMin 
    # access Memo 
else 
    # start thread to get new data 

HTH