【问题标题】:Python caching in windows 10 using lru_cache使用 lru_cache 在 Windows 10 中进行 Python 缓存
【发布时间】:2017-11-10 10:04:53
【问题描述】:

我有一个运行缓慢的 python 程序。我使用@lru_cache(maxsize=2056) 装饰器添加了缓存以增加我的进程的缓存,但是当我运行我的代码时,我的程序消耗的内存在任务管理器中是 260 MB(不是 2 GB)。这是不允许高缓存的Windows 10的限制吗? 我使用 eclipse luna + pydev 运行我的代码。我的python版本是3.5。

【问题讨论】:

  • Cache只需要260,为什么还要分配2056MB?这是缓存不应超过的最大大小。
  • 是的,也许是这个原因。但是我的代码速度没有增加,而这段代码在另一个系统中运行只需 2 分钟
  • 不相关的建议。确保 maxsize=2^x 其中 x 是一个正整数。当 maxsize 是 2 的幂时,lru_cache 的效果要好得多(但我不确定确切的原因)。

标签: python-3.x windows-10


【解决方案1】:

这不是 Windows 10 的限制。 @lru_cache 上的 maxsize 参数表示将保存在内存中的函数返回的最大数量,取决于您正在缓存的内容,缓存的大小会有所不同。

因此,您正在缓存 2056 个最近的调用,它们之间具有不同的参数。

根据文档:https://docs.python.org/3/library/functools.html#functools.lru_cache

If maxsize is set to None, the LRU feature is disabled and the cache can grow without bound. The LRU feature performs best when maxsize is a power-of-two.

这会将所有不同的函数调用保存在缓存中。

【讨论】:

    【解决方案2】:

    谢谢@chaim。你说的对。我再次检查了我的任务管理器。消耗的内存被考虑用于python,而不是我的eclipse。现在已经超过 1 GB。所以这不是 Windows 10 的限制。

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 2018-01-02
      • 2021-12-17
      • 2017-02-21
      • 2020-05-19
      • 2018-08-20
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多