gpt4 book ai didi

python - 在 h5py 中,我需要在关闭文件之前调用 flush() 吗?

转载 作者:太空狗 更新时间:2023-10-30 02:37:54 25 4
gpt4 key购买 nike

在 Python HDF5 库 h5py 中,我是否需要在 close() 之前先flush() 文件?

或者关闭文件是否已经确保可能仍在缓冲区中的任何数据都将写入磁盘?

冲洗的重点是什么?什么时候需要冲洗?

最佳答案

不,您不需要在关闭前刷新文件。当您关闭文件时,底层 HDF5 C 库会自动完成刷新。


至于冲水点。与内存或缓存访问等事物相比,文件 I/O 速度较慢。如果每次执行写入操作时,程序都必须等待数据实际写入磁盘,这会大大降低速度。因此,实际写入磁盘至少由操作系统缓冲,但在许多情况下由正在使用的 I/O 库(例如,C 标准 I/O 库)缓冲。当您要求将数据写入文件时,通常只是意味着操作系统已将您的数据复制到它自己的内部缓冲区,并在方便时实际将其放入磁盘。

在调用的任何级别,刷新都会覆盖此缓冲。因此调用 h5py.File.flush() 将刷新 HDF5 库缓冲区,但不一定刷新操作系统缓冲区。这样做的目的是让程序可以控制数据何时真正离开缓冲区。

例如,写入标准输出通常是行缓冲的。但是如果你真的想在换行符之前看到输出,你可以调用 fflush(stdout)。如果您将一个进程的标准输出传输到另一个进程,这可能是有意义的:下游进程可以立即开始使用输入,而无需等待操作系统决定是时候了。

另一个很好的例子是调用 fork(2)。这通常会复制进程的整个地址空间,这也意味着 I/O 缓冲区。这可能会导致重复输出、不必要的复制等。刷新流可保证缓冲区在 fork 之前为空。

关于python - 在 h5py 中,我需要在关闭文件之前调用 flush() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48712186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com