2
我有一個庫,它將一些REST API映射到某個對象模型。所以使用API很容易。問題是每次我得到某個對象的屬性時,庫都會向服務器發出實際的請求。從性能角度來看這並不好。Python自動備忘錄
我想要的是添加記憶屬性值一段時間(比如說5分鐘)的功能,並且僅在數據過期時才進行實際請求。
問題是有可能在不改變庫代碼的情況下做到這一點?例如使用裝飾器或類似的東西。
我有一個庫,它將一些REST API映射到某個對象模型。所以使用API很容易。問題是每次我得到某個對象的屬性時,庫都會向服務器發出實際的請求。從性能角度來看這並不好。Python自動備忘錄
我想要的是添加記憶屬性值一段時間(比如說5分鐘)的功能,並且僅在數據過期時才進行實際請求。
問題是有可能在不改變庫代碼的情況下做到這一點?例如使用裝飾器或類似的東西。
你想使用稱爲'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
可能的重複[什麼是memoization,我怎麼用它在Python?](http://stackoverflow.com/questions/1988804/what-is-memoization-and-how-can-i-use-it-in-python) – lesmana