繁体   English   中英

我们可以为 python 文件类对象禁用 h5py 文件锁定吗?

[英]Can we disable h5py file locking for python file-like object?

使用h5py打开 HDF5 文件时,您可以传入一个类似 python 文件的对象。 我已经这样做了,其中类似文件的对象是我自己的基于网络的传输层的自定义实现。

这很好用,我可以在高延迟传输层上对大型 HDF5 文件进行切片。 然而,HDF5 似乎提供了它自己的文件锁定功能,因此如果您在同一进程(线程模型)中打开多个只读文件,它仍然只会有效地连续运行操作。

HDF5 中有支持并行操作的驱动程序,例如h5py.File(f, driver='mpio') ,但这似乎不适用于使用h5py.File(f, driver='fileobj')的类似 python 文件的对象h5py.File(f, driver='fileobj')

我看到的唯一解决方案是使用多处理。 但是可扩展性非常有限,由于开销,您实际上只能打开 10 个进程。 我的传输层使用 asyncio 并且能够以 1,000 或 10,000 的规模进行并行操作,这使我能够构建更长的慢速文件读取操作队列,从而提高我的总吞吐量。

当我并行排队 10k IO 操作(需要 50GB 的 RAM 来服务请求,一个可接受的权衡吞吐量)。

有什么办法可以在使用driver='fileobj'时禁用 h5py 文件锁定?

您只需要将环境变量HDF5_USE_FILE_LOCKING的值设置为FALSE

示例如下:

在 Linux 或 MacOS 中通过终端: export HDF5_USE_FILE_LOCKING=FALSE

在 Windows 中通过命令提示符 (CMD): set HDF5_USE_FILE_LOCKING=FALSE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM