【发布时间】:2016-10-26 23:32:39
【问题描述】:
我在 python 中有具有 lru_cache 缓存的函数,例如
@lru_cache(maxsize=None)
def my_function():
...
虽然我可以单独清除缓存,例如my_function.cache_clear() 有没有办法一次清除每个函数的缓存? [我在想也许有一种方法可以返回所有加载到内存中的函数名,然后循环遍历它们以清除每个函数的缓存]。
我特别希望将其作为后备的一部分来实现,以应对我机器上 90% 的内存被使用的情况。
【问题讨论】:
-
是的,装饰函数现在有方法
my_function.cache_clear()。您还可以通过my_function.cache_info()获取统计信息。见lru_cache -
@AChampion - 当然,知道这两者,但问题是有没有一种方法可以将这些方法应用于每个修饰函数(即清除 all lru_cache 的)。
-
不,没有简单的方法可以清除所有修饰函数缓存,它们都是独立的。您可以为所有这些函数创建一个注册表,然后遍历它们以清除它们。