如果我使用memoize
装饰器,例如类似于:
https://wiki.python.org/moin/PythonDecoratorLibrary#Memoize
我是否需要担心耗尽内存并需要手动进行垃圾回收?例如,如果我有一个持续记忆的长期运行的Python进程,我不需要确保dict
不会太大。 memoize
装饰者通常还需要进行缓存驱逐吗?
为什么这不是一个可以容纳任意数量的中间状态的装饰器的问题?
使用lru_cache
中的functools
会解决此问题吗?
答案 0 :(得分:2)
您链接的memoized
装饰器对内存使用没有限制,并且不执行缓存驱逐。所以是的,如果你继续使用不同的参数调用函数,你必须担心内存不足。
functools.lru_cache(n)
不会在缓存中存储超过n
个调用 - 这非常适合限制内存使用。