2012-12-15 191 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