【发布时间】:2016-08-30 09:33:50
【问题描述】:
处理非常大 (>50Gb) 的文件时出现内存错误(问题:RAM 内存已满)。
我的解决方案是:我只想读取 500 kb 的数据并处理(然后从内存中删除它并继续读取下一个 500 kb)。还有其他更好的解决方案吗?或者如果这个解决方案看起来更好,如何使用 numpy 数组?
这只是代码的 1/4(仅供参考)
import h5py
import numpy as np
import sys
import time
import os
hdf5_file_name = r"test.h5"
dataset_name = 'IMG_Data_2'
file = h5py.File(hdf5_file_name,'r+')
dataset = file[dataset_name]
data = dataset.value
dec_array = data.flatten()
........
此时出现内存错误,因为它试图将所有数据放入内存。
【问题讨论】:
-
哪一行引发了错误?为什么你需要打电话给
flatten()? -
我需要进一步对数据进行一些处理和操作。例如:我需要确定一个特定数字在哪里,然后获取下一个数字的索引,将其存储在一个数组中并实现一个计数器。
标签: python arrays numpy memory