记住 Python 垃圾收集

Jam*_*Lam 5 python garbage-collection

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

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

我是否需要担心内存不足和需要手动垃圾收集?例如,如果我有一个长时间运行的 Python 进程,它不断地记忆,我不需要确保dict它不会变得太大。不要memoize装饰通常也需要做高速缓存收回?

为什么这不是所有可以保持任意数量中间状态的装饰器的问题?

使用lru_cachefrom 会functools解决这个问题吗?

orl*_*rlp 3

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

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