记住Python垃圾收集

时间:2015-05-14 22:19:52

标签: python garbage-collection

如果我使用memoize装饰器,例如类似于:

https://wiki.python.org/moin/PythonDecoratorLibrary#Memoize

我是否需要担心耗尽内存并需要手动进行垃圾回收?例如,如果我有一个持续记忆的长期运行的Python进程,我不需要确保dict不会太大。 memoize装饰者通常还需要进行缓存驱逐吗?

为什么这不是一个可以容纳任意数量的中间状态的装饰器的问题?

使用lru_cache中的functools会解决此问题吗?

1 个答案:

答案 0 :(得分:2)

您链接的memoized装饰器对内存使用没有限制,并且不执行缓存驱逐。所以是的,如果你继续使用不同的参数调用函数,你必须担心内存不足。

functools.lru_cache(n)不会在缓存中存储超过n个调用 - 这非常适合限制内存使用。