处理数据超出内存限制
我有一个数据结构,它表示一系列对象以及它们之间的链接。每个对象都有一个字典,里面存储着属性,这些属性甚至可以是嵌套的Python对象。
有时候,这些对象的数量太多,或者某些属性特别大,导致超出了可用内存。
有没有简单的方法可以处理这些数据,而不会出现内存异常呢?
如果我的属性只有字符串,我可以考虑使用图形数据库,但也许有更简单的方法,可以让我继续使用我的Python数据结构。
2 个回答
0
其实,你 可以 安装更多的内存哦 ;-)
这绝对是最简单的解决办法(不过我不太确定在你具体的情况下是否可行),而且可能也是最便宜的选择(别忘了改代码的费用)。
这只是一个你可以考虑的选项...
1
这里有4个“真正”的解决办法和2个“完全符合你需求”的解决办法:
- 调整你的数据结构,这样就不会存储那些你根本不需要的大块数据;比如说,如果你在用数据库,可能在查询时并不需要那些数据。
- 调整你的目标:也许你其实并不需要处理这些东西。
- 把处理过程拆分成更小的部分,确保释放掉那些不再使用的对象,让它们被垃圾回收(也就是不再保留任何引用)。
- 买更多的内存条。
那两个完全符合你需求的解决办法,如果不买更多内存,就得用硬盘来处理。因此,它们会非常慢。不过,如果你的数据量很大(几百GB),而你必须处理所有数据,这可能就是你唯一的选择(使用闪存驱动器可能会加快速度,但频繁写入会很快损坏它)。
- 增加你的虚拟内存大小。(在Linux系统中,可以通过增大交换分区的大小,或者添加更多的交换分区来实现。)
- 把处理过程拆分成更小的部分,把数据从内存中卸载回硬盘,虽然你可能还会再用到这些数据。