gxm*_*xmw 5 python mmap hdf5 python-multiprocessing
我试图从内存缓存(memcached)或网络加载HDF5数据,然后从多个Python进程查询它(只读),而不需要单独复制整个数据集.直观地说,我想将图像(就像它出现在磁盘上)映射到多个进程中,然后从Python中查询它.
我发现这很难实现,因此这个问题.指针/更正表示赞赏.
File.get_file_image()似乎可以获取文件图像的方法.我没有看到如何从内存映像而不是磁盘文件构造新的File/FileNode.ndarray.__new__(buffer=...)表示它将复制数据,而numpy视图似乎只能从现有的ndarray构建,而不是原始缓冲区.Value包装器来帮助一点).如果我直接使用ctypes,我可以毫无问题地读取我的mmap'd数据,但是我会丢失所有的结构信息,并从numpy/pandas/pytables中查询它.mmap + 带 H5py 的核心驱动程序,用于内存中只读访问。我不久前提交了一个 H5py 补丁,用于处理此类场景的文件图像。不幸的是它被拒绝了,因为上游不想给用户搬起石头砸自己脚的能力和安全的缓冲区管理(通过Python 2.7引入的c缓冲区协议),但这需要改变HDF的一面,而我还没有抽出时间。不过,如果这对您很重要并且您很小心并且有能力自己构建 pyHDF,请查看此处的补丁/拉取请求