处理数据超出内存限制

-1 投票
2 回答
565 浏览
提问于 2025-04-16 18:35

我有一个数据结构,它表示一系列对象以及它们之间的链接。每个对象都有一个字典,里面存储着属性,这些属性甚至可以是嵌套的Python对象。

有时候,这些对象的数量太多,或者某些属性特别大,导致超出了可用内存。

有没有简单的方法可以处理这些数据,而不会出现内存异常呢?

如果我的属性只有字符串,我可以考虑使用图形数据库,但也许有更简单的方法,可以让我继续使用我的Python数据结构。

2 个回答

0

其实,你 可以 安装更多的内存哦 ;-)

这绝对是最简单的解决办法(不过我不太确定在你具体的情况下是否可行),而且可能也是最便宜的选择(别忘了改代码的费用)。

这只是一个你可以考虑的选项...

1

这里有4个“真正”的解决办法和2个“完全符合你需求”的解决办法:

  1. 调整你的数据结构,这样就不会存储那些你根本不需要的大块数据;比如说,如果你在用数据库,可能在查询时并不需要那些数据。
  2. 调整你的目标:也许你其实并不需要处理这些东西。
  3. 把处理过程拆分成更小的部分,确保释放掉那些不再使用的对象,让它们被垃圾回收(也就是不再保留任何引用)。
  4. 买更多的内存条。

那两个完全符合你需求的解决办法,如果不买更多内存,就得用硬盘来处理。因此,它们会非常慢。不过,如果你的数据量很大(几百GB),而你必须处理所有数据,这可能就是你唯一的选择(使用闪存驱动器可能会加快速度,但频繁写入会很快损坏它)。

  1. 增加你的虚拟内存大小。(在Linux系统中,可以通过增大交换分区的大小,或者添加更多的交换分区来实现。)
  2. 把处理过程拆分成更小的部分,把数据从内存中卸载回硬盘,虽然你可能还会再用到这些数据。

撰写回答