HDF5是否可以通过单独的python进程可靠地同时写入和读取?


9

我正在编写一个脚本,将一段时间后的实时数据记录到一个HDF5文件中,该文件包括该项目的整个数据集。我正在使用Python 3.6,并决定创建一个click用于收集数据的命令行工具。

我担心的是,如果数据收集脚本正在写入HDF5文件,而尚待开发的ML应用程序尝试从同一文件中读取数据,将会发生什么?

我看了HDF Group关于HDF5并行I / O的文档,但这并没有真正为我弄清楚。

Answers:


10

HDF5并行I / O无法解决此问题。该技术主要是为了提高性能,而不是为了避免碰撞。

您想要的就是SWMR(单写/多读)

数据采集​​和计算机建模系统通常需要在编写数据时对其进行分析和可视化。例如,应用程序在运行中间产生结果时,通常会建议更改一些基本参数,调整传感器或完全废弃运行,这并不罕见。

为了使用户能够检查此类系统,我们一直在开发并发的读/写文件访问模式,我们将其称为SWMR(发音为游泳者)。SWMR是单写/多读的缩写。SWMR功能允许编写器进程将数据添加到文件中,而多个读取器进程则从文件中读取数据。

SWMR最初包含在2016-03-30发布的HDF5版本1.10.0中

并发访问HDF5文件-单个写入器/多个读取器(SWMR)

单写入器/多读取器或SWMR功能使用户可以在写入数据的同时读取数据。不需要进程之间的通信和文件锁定。这些进程可以共享相同的POSIX通用文件系统,因此它们可以在相同或不同的平台上运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.