使用数据超出了内存

时间:2011-05-29 23:11:15

标签: python database memory

我有一个数据结构,表示对象列表和它们之间的链接。每个对象拥有一个带有属性的dict,甚至可以是嵌套的Python对象。

由于数量庞大或有时由于个别大的属性,这些对象超出了可用内存。

有没有一种简单的方法可以在没有内存异常的情况下处理这些数据?

如果我只有字符串属性,我可以考虑图形数据库,但也许有一些更简单的东西可以让我保留我的Python数据结构。

2 个答案:

答案 0 :(得分:1)

有4个“真正的”解决方案和2个“字面上你想要的”解决方案:

  1. 修改架构,这样就不会保留您不需要的大量数据;也许您正在使用数据库而不需要在查询中检索这些数据。
  2. 修改你的目标:也许你真的不需要处理这些事情。
  3. 将处理分解为更小的块,确保释放未使用的对象以进行垃圾收集(通过放弃所有引用)。
  4. 购买更多内存。
  5. 这两种解决方案实际上可以满足您的需求而无需购买更多内存,需要使用硬盘。因此,它们将非常缓慢。但是,如果您的数据量很大(数百千兆字节),并且 要遍历所有数据,这可能是您唯一的选择(闪存驱动器可能提供很好的加速,但过多的写入将会很快就把它磨掉了。)

    1. 增加虚拟内存的大小。 (在Linux中,这是通过增加交换分区的大小或添加更多交换分区来完成的。)
    2. 将处理分解成更小的块,通过垃圾收集将RAM中的内容卸回磁盘,即使您可能需要再次使用它。

答案 1 :(得分:0)

好吧,你可以只安装更多内存; - )

这是迄今为止最简单的解决方案(虽然我不确定在您的特定情况下它有多可行),甚至可能是最便宜的(请记住更改代码的成本)。

只需要注意......