Python进程不释放内存。

3

我有一个包含以下数据的字典:

my_dict = {'item_1': <generator object continuation_stripper at 0xda78640>,
           'only_display_attrs': <generator object continuation_stripper at 0xda78690>,
           'item_2': <generator object continuation_stripper at 0xda786e0>}

我将试图循环遍历一个字典值 only_display_attrs,这个字典值是一个生成器对象。

以下是我的代码:

for item in my_dict['only_display_attrs']:
    yield i

注意:only_display_attrs是一个SQLAlchemy生成器对象。
这个循环会消耗高达1100MB的内存来处理30000行数据,且在进程被手动终止之前不会释放内存。
请问有人能帮我理解其中的原因吗?

1
你如何知道内存没有被释放?只有当垃圾回收器决定内存对于某些其他操作是必要的并且必须被回收时,内存才会被释放。此外,一些操作系统倾向于在真正需要时才回收内存。因此,如果没有内存请求,看到内存使用量增长而不缩小并不罕见。 - Paolo Moretti
1个回答

1

相关的部分是你如何处理产生的值。如果你保留它们,那么内存将永远不会被释放。但在显示的代码中,没有使用任何内存(除非 continuation_stripper 代码有错误)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接