gpt4 book ai didi

numpy - numpy 如何处理 npz 文件上的 mmap?

转载 作者:行者123 更新时间:2023-12-03 00:25:51 24 4
gpt4 key购买 nike

我有一个例子,我想使用 mmap 模式打开压缩的 numpy 文件,但似乎找不到任何有关它如何在幕后工作的文档。例如,它会在内存中解压存档然后进行 mmap 吗?它会即时解压吗?

该配置缺少文档。

最佳答案

根据查看代码,简短的答案是归档和压缩,无论是否使用 np.savezgzip ,与访问 mmap_mode 中的文件不兼容。这不仅仅是如何完成的问题,而是是否能够完成的问题。

np.load中的相关位功能

elif isinstance(file, gzip.GzipFile):
fid = seek_gzip_factory(file)
...
if magic.startswith(_ZIP_PREFIX):
# zip-file (assume .npz)
# Transfer file ownership to NpzFile
tmp = own_fid
own_fid = False
return NpzFile(fid, own_fid=tmp)
...
if mmap_mode:
return format.open_memmap(file, mode=mmap_mode)

查看np.lib.npyio.NpzFile 。安npz文件是 .npy 的 ZIP 存档文件。它加载一个字典(类似)对象,并且仅在访问单个变量(数组)时加载它们(例如 obj[key]). There's no provision in its code for opening those individual files in mmap_mode`。

很明显,使用 np.savez 创建的文件无法作为 mmap 访问。 ZIP 归档和压缩与 np.load 中前面提到的 gzip 压缩不同。 .

但是用 np.save 保存的单个数组又如何呢?然后gzipped ?请注意format.open_memmap被调用 file ,不是fid (可能是 gzip 文件)。

有关 open_memmap 的更多详细信息在np.lib.npyio.format 。它的第一个测试是file必须是字符串,而不是现有文件 fid。它最终将工作委托(delegate)给 np.memmap 。我在该函数中没有看到 gzip 的任何规定.

关于numpy - numpy 如何处理 npz 文件上的 mmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080556/

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