2017-03-08 35 views
0

我必须处理大量的数据(大约4000个图像的单个图层的特征图),这些数据在某点之后大小超过50 GB。处理涉及一些计算,然后将大约2MB文件写入HDD。如何在有限的RAM中处理大量的数据

由于免费内存大约40GB,我的进程在某个点后崩溃。任何人都可以提出一个更好的方法来分割或处理这个50GB数据,以便可以在可用的RAM中进行计算。对于例如一些在内存压缩方法

我只是寻找提示,以解决这个问题的可能方法。

谢谢

+0

不要一次将所有数据存储在内存中。把它分成小块。 –

+0

是的,但数据需要同步。不知道有什么最好的办法有这样一个kinda保存点。 – blackbug

+1

您的问题描述过于笼统,无法提供任何详细的答案。您是将整个数据集一次加载到RAM中,还是将它分成批次?如果你没有做后者,我认为这是一条路。然后,您可以连续分析批次,这意味着一旦批次完成,您就可以继续下一批,直到所有批次都被处理完毕。这样,你正在处理的集合不应该大于可用内存。 –

回答

0

这个问题让我想起了80年代初。内存过去很贵,我们发明了交换。 (操作系统的高级别部分)看到的内存比实际存在的多,并且页面被复制到磁盘上。当需要一个时,另一个被换掉,并且该页面被复制回到存储器中。表演很糟糕,但至少可以奏效。

你的问题是相当广泛的,但经验法则表明,如果你可以批量处理你的数据,明确地加载批量数据效率更高,但如果algorythm过于复杂或需要对任何数据任何时候,只要让它交换就可以了。

因此,添加一个比您认为需要的内存大得多的交换文件(使用给定的尺寸,我会尝试100或200 GB),在离开办公室之前开始处理,并且您可以在第二天在早上。