2014-11-02 28 views
1

我使用python装饰器来记忆某些方法,但程序终止时会丢失缓存。我曾想过如何实现基于云计算的缓存存储在MongoDB中,但我想知道是否有更简单的解决方案。基于云的记忆

回答

1

结账joblib。它有一个memoize-to-disk装饰器,可以在本地执行此操作。在其他地方缓存结果也可以通过继承来实现,但不是我实际看到的。您可以通过查看functools或其backport克隆中的lru_cache实现并更改与缓存对象的交互方式来轻松编写自己的代码,因此它可以与数据库而不是字典进行交互。

请记住,查询数据库需要支付一定的代价,除非是长时间运行的任务,否则很难从缓存中获益。

或者,您可以编写一个简单的atexit句柄来遍历每个functools.lru_cache实例,并将它们的缓存转储为json或pickles,并将它们作为init进程的一部分重新加载。