Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python h5py缓冲的精细控制_Python_Hdf5_H5py - Fatal编程技术网

Python h5py缓冲的精细控制

Python h5py缓冲的精细控制,python,hdf5,h5py,Python,Hdf5,H5py,我在内存中有一些数据要存储在HDF文件中 我的数据不是很大(H5Fflush命令的作用是请求文件系统将所有缓冲区传输到文件 有一个关于它的特别说明: HDF5无法完全控制缓冲。H5Fflush刷新 然后,内部HDF5缓冲区要求操作系统(操作系统)执行以下操作: 刷新打开文件的系统缓冲区。之后,操作系统 负责确保数据实际刷新到磁盘 在实践中,我注意到我可以使用大部分时间从已刷新的HDF5文件中读取数据(即使进程随后被终止),但HDF5不能保证这一点:依赖刷新操作将有效的HDF5文件作为进一步操作(

我在内存中有一些数据要存储在HDF文件中


我的数据不是很大(H5Fflush命令的作用是请求文件系统将所有缓冲区传输到文件

有一个关于它的特别说明:

HDF5无法完全控制缓冲。H5Fflush刷新 然后,内部HDF5缓冲区要求操作系统(操作系统)执行以下操作: 刷新打开文件的系统缓冲区。之后,操作系统 负责确保数据实际刷新到磁盘


在实践中,我注意到我可以使用大部分时间从已刷新的HDF5文件中读取数据(即使进程随后被终止),但HDF5不能保证这一点:依赖刷新操作将有效的HDF5文件作为进一步操作(例如元数据)是不安全的如果进程被中断,可能会损坏该文件。您必须完全关闭该文件才能保持一致性。

如果需要一致性并避免损坏hdf5文件,您可能需要:

1) 使用提前写入日志,使用追加日志写入每次添加/更新的内容,此时无需写入hdf5。 2) 定期地,或者在需要关闭的时候,重放日志以逐个应用它们,写入hdf5文件 3) 如果进程在1)期间停止,则不会丢失数据,下次启动后,只需重放日志并将其写入hdf5文件
4) 如果进程在2)期间停止,您将不会丢失数据,只需删除损坏的hdf5文件,重播日志并重新写入即可。

您尝试过吗?只是简单地尝试一下。我添加了一个数据集,我调用flush,大约一秒钟后,操作系统告诉我文件大小增加了。