Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
记忆Python垃圾收集_Python_Garbage Collection - Fatal编程技术网

记忆Python垃圾收集

记忆Python垃圾收集,python,garbage-collection,Python,Garbage Collection,例如,如果我使用类似于中的memoize装饰器: 我是否需要担心内存不足和需要手动垃圾收集?例如,如果我有一个长期运行的Python进程,它会不断地进行记忆,那么我不需要确保dict不会变得太大。memoize装饰程序通常也需要执行缓存逐出吗 为什么这不是所有可以持有任意数量中间状态的装饰器的问题 使用functools中的lru\u缓存可以解决这个问题吗?您链接的记忆化的装饰器对内存使用没有限制,也不会执行缓存逐出。因此,是的,如果您继续使用不同的参数调用函数,您必须担心内存不足 funct

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

我是否需要担心内存不足和需要手动垃圾收集?例如,如果我有一个长期运行的Python进程,它会不断地进行记忆,那么我不需要确保
dict
不会变得太大。
memoize
装饰程序通常也需要执行缓存逐出吗

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


使用
functools
中的
lru\u缓存
可以解决这个问题吗?

您链接的
记忆化的
装饰器对内存使用没有限制,也不会执行缓存逐出。因此,是的,如果您继续使用不同的参数调用函数,您必须担心内存不足


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

带有弱引用的备忘录允许垃圾收集器时不时地回收对象。