在Python中连续加载大变量

在Python中连续加载大变量,python,performance,memory,ram,hdf5,Python,Performance,Memory,Ram,Hdf5,系统配置:Ubunut 14.04,RAM:128 GB,英特尔至强E5-2630 v3@2.40GHz×16,每次运行前占用约5 GB/128 GB 我有两个HDF5文件,每个大小为22.5 GB。python代码模板的格式如下: for i in range(10) h5f = h5py.File(<FILE_PATH_1>,'r') data1 = h5f[<VARIABLE_NAME>][:] #22.5 GB size h5f = h

系统配置:Ubunut 14.04,RAM:128 GB,英特尔至强E5-2630 v3@2.40GHz×16,每次运行前占用约5 GB/128 GB

我有两个HDF5文件,每个大小为22.5 GB。python代码模板的格式如下:

for i in range(10)
    h5f  = h5py.File(<FILE_PATH_1>,'r')
    data1 = h5f[<VARIABLE_NAME>][:] #22.5 GB size
    h5f  = h5py.File(<FILE_PATH_2>,'r')
    data2 = h5f[<VARIABLE_NAME>][:] #22.5 GB size

    # Do some processing

    del data1
    del data2
范围(10)内的i的

h5f=h5py.File(,'r')
数据1=h5f[][:]#22.5 GB大小
h5f=h5py.File(,'r')
数据2=h5f[][:]#22.5 GB大小
#做一些处理
德尔数据1
德尔数据2
现在,加载
data1
需要约10秒钟。RAM最高可达25 GB。当第二个变量开始加载时,它会迅速填满内存,直到~32 GB(就像
data1
填满它一样快),然后变得非常慢(大约每秒0.2 GB)。因此加载
data2
需要约100秒。如果我加载另一个文件,速度同样慢


基本上,在32 GB的RAM被填满之后,任何加载都是缓慢的。有没有办法解决这个问题?如果这需要以不同的方式写入HDF文件,我也愿意这样做(显然,保持每个文件小于16 GB,以便两个文件在32 GB之前不会填满RAM)。

这可能是您的系统或计算机的问题……好的。我们有两台配置相同的计算机。我可以检查其他系统,稍后在这里发布这些数字。你是如何加载数据的?理想情况下,您不必一次将整个文件读入内存,只需分块处理。@BrendanAbel我添加了一些关于如何加载的详细信息。在块中加载听起来是个好主意,我可以选择那些不超过32GB的块。就我刚才测试的结果而言,这是可行的。然而,我对这个32GB的屏障感兴趣。如前所述,这可能是机器的问题,我稍后会研究。您有128Gb的RAM,但您没有提到其中有多少是免费的。由于系统非常喜欢使用可用的ram进行缓存,或者说,在这种情况下,您没有很多可用的ram,您的系统必须在能够将其分配给第二个文件之前进行移动。