【问题标题】:How to export lru_cache in python?如何在 python 中导出 lru_cache?
【发布时间】:2016-04-06 01:53:43
【问题描述】:

我正在使用来自functools 的装饰器@lru_cache(maxsize=None),我不想将记忆值保存到文件中,以避免每次运行代码时重新计算它们。

与将参数和值打印到文件然后读取它们不同,有没有一种优雅的方式来执行此操作?

【问题讨论】:

  • functools.lru_cache() 旨在使用任意位置和关键字参数,以及可能的最大缓存大小。如果您不需要这些功能,那么滚动您自己的缓存(又名 memoize)装饰器并不难。缓存只是一个字典,因此您可以提供一个函数将其作为pickle(或json,如果您希望能够查看它)保存到磁盘并稍后重新加载。 lru_cache 源代码也是available;修改它以满足您的需要。
  • @RootTwo 您能否添加此评论作为答案?这确实是我一直在寻找的答案。

标签: python save memoization lru


【解决方案1】:

@Carlos Pinzón,按照您的要求作为答案发布:functools.lru_cache() 旨在使用任意位置和关键字参数,以及可能的最大缓存大小。如果您不需要这些功能,那么滚动您自己的缓存(又名 memoize)装饰器并不难。缓存只是一个字典,因此您可以提供一个函数将其作为pickle(或json,如果您希望能够查看它)保存到磁盘并稍后重新加载。 lru_cache 源代码也可用;修改它以满足您的需要。

【讨论】:

    【解决方案2】:

    不,我认为唯一的方法是获取 .cache_info() 函数的信息并写入文件。

    它会是一个 CacheInfo 对象,其中包含您需要的信息。

    【讨论】:

    • _CacheInfo 对象仅存储缓存统计信息:命中、未命中、最大大小和当前大小。没有什么可以让您保存和恢复缓存。
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2016-12-12
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多