2012-11-26 80 views
3

我有我的字典与下面的数据,Python进程不释放内存

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_attrsSQLAlchemy发电机对象。

此循环消耗高达1100 MB的内存用于30,000行数据,并且不释放内存,直到手动终止进程。

任何人都可以帮助我理解背后的原因。

+1

你怎么知道内存没有被释放?内存只在垃圾收集器决定内存对于其他操作是必需的并且必须被恢复时才被释放。另外,有些操作系统往往不会回收内存,直到真正需要。所以,如果没有内存请求,看到内存使用量增加并且不缩水并不罕见。 –

回答

1

相关位是您对所生成的值所做的操作。如果你把它们放在一边,那么内存将永远不会被释放。但在显示的代码中,没有内存被用完(除非continuation_stripper代码中有一些错误)。