记住Python垃圾收集

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

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

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

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

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

最佳答案 您链接的memoized装饰器对内存使用没有限制,也不会进行缓存驱逐.所以是的,如果你继续使用不同的参数调用函数,你必须担心内存不足.

functools.lru_cache(n)不会在缓存中存储多于n个调用 – 这非常适合限制内存使用.

点赞