gpt4 book ai didi

numpy - numpy 数组的内存映射文件

转载 作者:行者123 更新时间:2023-12-02 10:11:44 31 4
gpt4 key购买 nike

我需要读取存储在内存映射文件中的巨大 numpy 数组的部分内容,处理数据并对数组的另一部分重复。整个 numpy 数组占用大约 50 GB,我的机器有 8 GB RAM。

我最初使用 numpy.memmap 创建内存映射文件,方法是读入许多较小的文件并处理它们的数据,然后将处理后的数据写入 memmap 文件。在创建 memmap 文件期间,我没有出现内存问题(我定期使用 memmap.flush() )。以下是我创建内存映射文件的方法:

mmapData = np.memmap(mmapFile,mode='w+', shape=(large_no1,large_no2))
for i1 in np.arange(numFiles):
auxData = load_data_from(file[i1])
mmapData[i1,:] = auxData
mmapData.flush() % Do this every 10 iterations or so

但是,当我尝试访问 memmap 文件的一小部分(<10 MB)时,创建 memmap 对象时它会淹没我的整个内存。机器速度急剧减慢,我什么也做不了。以下是我尝试从内存映射文件中读取数据的方法:

mmapData = np.memmap(mmapFile, mode='r',shape=(large_no1,large_no2))
aux1 = mmapData[5,1:1e7]

我认为使用 mmap 或 numpy.memmap 应该允许我访问大型数组的部分内容,而无需尝试将整个数组加载到内存中。我错过了什么?

我是否使用了错误的工具来访问存储在磁盘中的大型 numpy 数组(> 20 GB)的部分内容?

最佳答案

是否您正在考虑虚拟内存消耗,而不是物理内存消耗,并且速度减慢是由于其他原因造成的?

关于numpy - numpy 数组的内存映射文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26204052/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com