产生巨大 numpy 的内存问题(被信号 9 中断:SIGKILL)

memory issue creating huge numpy (interrupted by signal 9: SIGKILL)

我有一个巨大的 csv,我必须为特定列中的相同参数创建一个 numpy 数组(类型 ara 大约 10)但是我的列表有问题:它太大而且 python 下降:

 def mem():
    file = pd.read_csv(file_csv)
    x = []
    y = []
    path_prec = 0
    for index, row in file.iterrows():
        if path_prec == 0:
            path_prec = row[0]
        if path_prec!= row[0]:
            X = np.stack(x, axis=0)  
            Y = np.stack(y, axis=0)
            #save X and Y
            x = []
            y = []
            path_prec = row[0]
        #do some stuff and create a list
        top = int(row[2]) 
        bottom = int(row[3])
        left = int(row[4])
        right = int(row[5])

        patch = image[top:bottom, left:right]

        patch_gt = gt[top:bottom, left:right]
        x.append(patch)
        y.append(patch_gt)

我如何管理如此庞大的数据?带发电机?怎么样?

编辑: 这个巨大的 csv 包含在 fyle 系统中查找数据的信息

您可以创建 NumPy 的 memmap 对象。

根据其文档,这将:

Create a memory-map to an array stored in a binary file on disk.

Memory-mapped files are used for accessing small segments of large files on disk, without reading the entire file into memory.

您可能希望手动解析 CSV 以迭代填充 memmap,例如使用 chuncksize 选项。有关如何将 chunksize 用于类似目的的一些代码,请参阅:

快速天真的解决方案:每个路径有一个以上的 numpy 数组(因为我要做的并不重要,所以解决方案是最简单的