【发布时间】:2013-07-15 19:49:05
【问题描述】:
OUT_DIR = '/media/sf_3dAnalysis/simMatrix/'
SIM_FILE = 'similarity.npy'
data = np.lib.format.open_memmap(OUT_DIR+SIM_FILE, mode='w+', dtype='float32', shape=(len(filelist),len(filelist)))
del data
所以我在运行此代码时收到以下错误消息...
mmap.error: [Errno 22] Invalid argument。我真的不明白我做错了什么。如果相关的话,我会在 Linux VM 中运行它。此外,特别奇怪的是矩阵是在代码运行后创建的,但它仍然会崩溃,说参数无效,这对于为什么当它说参数无效时创建矩阵是没有意义的。
为了让内存映射在 linux 机器上而不是 windows 和 mac 上工作,我需要做些什么特别的事情吗?因为它在我的 mac 和 windows 机器上运行良好。我想我应该指定更多,是否需要在虚拟机中设置一些设置或某些东西才能使内存映射正常工作?因为我在一台正常运行Linux的电脑上试了一下,果然成功了。
【问题讨论】:
-
文件有多大?你是在虚拟机中创建的还是导入的?虚拟机的规格是什么?
-
文件大约 60 GB,在虚拟管理器中创建。我不知道你说的虚拟机规格是什么意思?
-
哎呀,这是一个错字。对不起。确切的形状是我认为不是特别相关的文件列表的长度。但我想可能是这样。 shape = (len(filelist), len(filelist)) 是确切的陈述。
-
对不起,我应该注意 len(filelist) 是 120821
-
好的,
shape=(120821, 120821)将创建一个 60GB 的矩阵/文件。
标签: python numpy memory-mapping