在列表中附加许多Numpy数组

2024-05-19 00:40:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约50万个numpy数组作为.npy文件保存在磁盘上。每个列有5列,行数在数亿到几百万行之间。我现在希望在一台3TB内存的机器上把它们全部读回内存。我的问题是:最快的方法是什么?在

我尝试过在列表理解中使用np.load,它运行得非常快,直到我的内存达到大约800gb,之后读取速度几乎慢到爬行。加载速度似乎不会以线性或几何速度减慢;它只是突然从800 GB点附近的悬崖上跌落。下面是我正在执行的简单代码:

def read_numpy_arrays():
        '''Read in all ngram arrays created by the previous stage, and store them in memory of master process'''
        gc.disable()
        ngram_arrays = [np.load(i) for i in glob.glob("outfiles/*/*/*.npy")]
        gc.enable()
        return ngram_arrays

我也试过移除垃圾收集线,但没什么大的不同。在

当我在处理了大约10个小时后调用top时,我可以看到我现在只每隔几分钟添加一次。在

enter image description here

我在Redhat上使用了Anaconda Python 2.7,我阅读的目录只有大约一半的空间:

^{pr2}$

有人知道是什么原因导致性能突然崩溃,或者我能做些什么来解决它吗?任何能提供帮助的人将不胜感激!在


Tags: 文件内存innumpy机器npload数组

热门问题