lru_cache导入文件并再次加载到内存中

2024-03-28 17:45:14 发布

您现在位置:Python中文网/ 问答频道 /正文

Python3中的functools包中,有一个lru_cache()修饰符,它将记录函数调用。在

有没有办法让我把这个缓存转储到一个文件中,然后在以后将文件加载回内存中?在

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


Tags: 文件方法内存文档功能cache记录解决方案
1条回答
网友
1楼 · 发布于 2024-03-28 17:45:14

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

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

和一起使用

^{pr2}$

相关问题 更多 >