我正在使用c / CUDA和python进行一些cfd仿真,目前工作流程是这样的:
由于我有很多数据和一些元数据,但我会更好 切换到hdf5文件格式。所以我的想法就像是,
我真的想对数据进行实时分析,即 从c-programm写入hdf5并使用pytables直接从python读取。 这将是非常有用的,但我真的不是 确定pytables支持多少。
由于我从未使用过pytables或hdf5,所以最好知道 如果这是一个好方法,或者可能存在一些陷阱。
答案 0 :(得分:3)
我认为这是一种合理的方法,但确实有一个陷阱。 HDF5 C库不是线程安全的(有一个" parallel"版本,以后会有更多内容)。这意味着,您的方案无法开箱即用:一个进程将数据写入文件而另一个进程正在读取(不一定是相同的数据集)将导致文件损坏。要使其有效,您必须:
最近,HDF小组发布了基于MPI的HDF5并行版本,可以实现并发读/写访问。参看http://www.hdfgroup.org/HDF5/PHDF5/。它是为像你这样的用例创建的。
据我所知,pytables不提供与并行HDF5的任何绑定。您应该使用h5py代替,它为并行HDF5提供非常用户友好的绑定。请参阅本网站上的示例:http://docs.h5py.org/en/2.3/mpi.html
不幸的是,并行HDF5有一个主要缺点:到目前为止,它不支持编写压缩数据集(尽管可以读取)。参看http://www.hdfgroup.org/hdf5-quest.html#p5comp