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

数据挖掘 Python 数据集
2021-10-02 04:28:24

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

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

我查看了 The HDF Group 关于HDF5 并行 I/O的文档,但这并没有真正让我明白。

1个回答

HDF5 并行 I/O 不能解决这个问题。该技术主要用于性能,而不是避免碰撞。

您想要的是SWMR(单作者/多读者)

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

为了使用户能够检查此类系统,我们一直在开发一种并发读/写文件访问模式,我们称之为 SWMR(发音为游泳者)。SWMR 是 single-writer/multi-reader 的缩写。SWMR 功能允许写入进程向文件添加数据,同时多个读取进程从文件中读取数据。

SWMR 首次包含在HDF5 版本 1.10.0 中,发布于 2016-03-30

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

Single Writer/Multiple Reader 或 SWMR 功能使用户能够在写入数据的同时同时读取数据。不需要进程之间的通信和文件锁定。这些进程可以在相同或不同的平台上运行,只要它们共享一个符合 POSIX 的通用文件系统。