【发布时间】:2021-09-13 15:49:39
【问题描述】:
我希望在内存中缓存一些 DataFrame 以加快我的程序速度(calculate_df 很慢)。我的代码是这样的
class Foo:
cache = {}
@classmethod
def get_df(cls, bar):
if bar not in cache:
cls.cache[bar] = cls.calculate_df(bar)
return cls.cache[bar]
@classmethod
def calculate_df(cls, bar):
......
return df
几乎所有时间,bar 的可能值乘以 df 的大小都适合内存。但是,我需要为我有太多不同的bars 和大df 的情况做计划,这会使我的cache 导致内存问题。我希望在运行cache[bar] = calculate_df(bar)之前先检查内存使用情况。
进行此类内存检查的正确/最佳方法是什么?
【问题讨论】:
-
告诉您可以使用多少缓存空间的规则是什么?发生了哪些“内存问题”,为什么会出现问题?
-
我还没有遇到“内存问题”,但我只是在考虑糟糕的情况。基本上如果内存使用率太高,我想停止将它们添加到
cls.cache并直接返回。我不知道告诉我可以使用多少缓存空间的规则是什么,我想这也是我的问题的一部分。看来我可以使用psutil.virtual_memory().available?
标签: python pandas memory-management