2014-11-02 52 views
1

我使用python裝飾器來記憶某些方法,但程序終止時會丟失緩存。我曾想過如何實現基於雲計算的緩存存儲在MongoDB中,但我想知道是否有更簡單的解決方案。基於雲的記憶

回答

1

結賬joblib。它有一個memoize-to-disk裝飾器,可以在本地執行此操作。在其他地方緩存結果也可以通過繼承來實現,但不是我實際看到的。您可以通過查看functools或其backport克隆中的lru_cache實現並更改與緩存對象的交互方式來輕鬆編寫自己的代碼,因此它可以與數據庫而不是字典進行交互。

請記住,查詢數據庫需要支付一定的代價,除非是長時間運行的任務,否則很難從緩存中獲益。

或者,您可以編寫一個簡單的atexit句柄來遍歷每個functools.lru_cache實例,並將它們的緩存轉儲爲json或pickles,並將它們作爲init進程的一部分重新加載。