通过多处理并行读取HDF5的数据集包装程序类

问题描述

我需要管理大量的生理波形数据,例如ECG,到目前为止,我发现使用Python进行机器学习/数据科学时,HDF5是兼容性最好的(pandas,PyTorch,{ {1}}等。切片/查询/仅读取数据集的某些行的功能特别吸引人。但是,我正在努力开发一个稳定的包装器类,该包装器类允许从许多scikit-learn工作人员进行简单而可靠的并行读取。我对单线程写入很好,因为我只需要一次将源数据ETL到HDF5中,但是缺少并行读取确实会在数据分析,PyTorch模型运行等过程中缩短运行时间。我已经通过Pandas和{{1 }}在以下情况下:

  • 一个大的HDF5文件
    • 只能使单个进程读取稳定。 multiprocessing很快损坏了整个文件
  • 每个时间间隔间隔一个HDF5文件
      即,数亿个文件。即使使用上下文管理器打开只读,冲突仍然会导致文件损坏。同样,由于高昂的IO成本,备份或传输如此多的文件也非常缓慢。

没有代码示例的道歉,但是在过去的几个月中,我尝试了数十种方法(每个方法有数百行),最终总是遇到稳定性问题。关于如何构建由HDF5支持的数据集包装器类,有没有很好的示例代码? AFAIK,h5py的基于MPI的“ Parallel HDF5”不相关,因为它位于一台机器上,并且“单作家多读者”不是必需的,因为我可以在任何读取之前编写单线程。理想情况下,我希望每当我在项目中需要数据时,都可以执行以下操作:

mp

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)