Python 2.7 使用Python限制内存中适合的数据量,以及当数据不适合内存时如何处理?
我想执行一个测试,如果我有一个500 MB的数据集,我只想读取100 MB的数据。这只是一个例子。一般来说,如果我的数据集大小为x,我希望能够只读取x/k个数据量 数据的格式为numpy数组。代码流将是:Python 2.7 使用Python限制内存中适合的数据量,以及当数据不适合内存时如何处理?,python-2.7,memory-management,numpy,Python 2.7,Memory Management,Numpy,我想执行一个测试,如果我有一个500 MB的数据集,我只想读取100 MB的数据。这只是一个例子。一般来说,如果我的数据集大小为x,我希望能够只读取x/k个数据量 数据的格式为numpy数组。代码流将是: data = pickle.load(open('test.data', 'rb')) nrows = data.shape[0] ncols = data.shape[1] sketch = np.zeros((k, ncols) #k << n for item in data
data = pickle.load(open('test.data', 'rb'))
nrows = data.shape[0]
ncols = data.shape[1]
sketch = np.zeros((k, ncols) #k << n
for item in data:
Do Something
data=pickle.load(打开('test.data','rb'))
nrows=data.shape[0]
ncols=data.shape[1]
sketch=np.zeros((k,ncols)#k既然我同意他们的观点,我将合并@HYRY和@ali_m的评论:如果你的数据无法放入内存,最简单的方法就是“脱离核心”处理它。这意味着数据在磁盘上,但软件层允许您几乎像在内存中一样与之交互。numpy内置了一个解决方案:。另一个非常好的软件包是。第一个软件包将数据存储为二进制文件,numpy放在文件的顶部,而不是RAM块的顶部。然后,您可以使用data inc.执行任何您想要的操作在整个阵列中执行luding操作。另一个需要HDF5文件,并且支持一些核心外的操作,它们速度非常快,还支持一些缩减操作,但您的限制更大。另一方面,HDF5是一种非常流行的格式,可以从许多其他语言访问,因此这是一个非常好的选择。不要使用pickle进行压缩numpy,您应该使用hdf5。如果您尝试取消勾选不适合核心内存的内容,Python将抛出MemoryError
异常。这对于处理不适合RAM的大型数据集非常有用。我可以使用pytables指定,我只需要RAM中的一条记录或100条记录吗?