Python lru_缓存转储到文件并再次加载回内存

Python lru_缓存转储到文件并再次加载回内存,python,python-3.x,caching,in-memory-database,functools,Python,Python 3.x,Caching,In Memory Database,Functools,在Python3中的functoolspacakge中,有一个lru\u cache()装饰程序,它将记录函数调用 有没有一种方法可以让我将这个缓存转储到一个文件中,然后稍后再将该文件加载回内存 我在functools文档中找不到此功能。实现上述要求的推荐方法是什么,最好是只使用Python的解决方案?我不知道解决此问题的标准方法。 但您可以这样编写注释: def diskcached(cachefile, saveafter=1): def cacheondisk(fn):

Python3
中的
functools
pacakge中,有一个
lru\u cache()
装饰程序,它将记录函数调用

有没有一种方法可以让我将这个缓存转储到一个文件中,然后稍后再将该文件加载回内存


我在functools文档中找不到此功能。实现上述要求的推荐方法是什么,最好是只使用Python的解决方案?

我不知道解决此问题的标准方法。 但您可以这样编写注释:

def diskcached(cachefile, saveafter=1):
    def cacheondisk(fn):
        try:
            with open(cachefile, 'rb') as f:
                cache = pickle.load(f)
        except:
            cache = {}
        unsaved = [0]

        @wraps(fn)
        def usingcache(*args, **kwargs):
            try:
                key = hash((args, kwargs))
            except TypeError:
                key = repr((args, kwargs))
            try:
                ret = cache[key]
            except KeyError:
                ret = cache[key] = fn(*args, **kwargs)
                unsaved[0] += 1
                if unsaved[0] >= saveafter:
                    with open(cachefile, 'wb') as f:
                        pickle.dump(cache, f)
                    unsaved[0] = 0
            return ret

        return usingcache

    return cacheondisk
与一起使用

@diskcached("filename_to_save")
def your_function():
    ...
可能重复: