有没有一种方法可以中止 python 写入操作,使操作系统认为没有必要将未写入的数据刷新到光盘?
我正在将数据写入 USB 设备,通常是许多兆字节。我在写入时使用 4096 字节作为我的 block 大小,但看起来 Linux 很早就缓存了一堆数据,然后慢慢地将其写入 USB 设备。如果在写入过程中的某个时刻,我的用户决定取消,我希望应用程序立即停止写入。我可以看到在数据停止从应用程序流出到 USB 事件指示灯停止闪烁之间存在延迟。几秒钟,通常最多约 10 秒。我发现应用程序在 close() 方法中,我假设等待操作系统完成写入缓冲数据。我在每次写入后调用 flush(),但这似乎对延迟没有任何影响。我搜索了 python 文档以寻找答案,但一无所获。
最佳答案
它在某种程度上依赖于文件系统,但在某些文件系统中,如果您在(全部)分配文件之前删除文件,则永远不会发生写入 block 的 IO。如果您截断它以便将仍在写入的部分切掉,这也可能是正确的。
如果您仍想访问数据,不确定是否真的可以中止写入。此外,支持此功能的文件系统类型(例如 xfs、ext4)通常不会在 USB 内存棒上使用。
如果要将数据刷新到光盘,请使用 fdatasync()。仅仅将 IO 库的缓冲区刷新到操作系统中不会实现任何物理刷新。
关于python - 写入后中止缓慢刷新到磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458624/