有没有办法中止python写入操作,使操作系统感觉不需要将未写入的数据刷新到光盘?写入后中止缓冲到磁盘?
我正在写数据到USB设备,通常是很多兆字节。我在写入时使用了4096个字节作为我的块大小,但看起来Linux很早就缓存了大量数据,并将其慢慢写入USB设备。如果在写入过程中的某个时候,我的用户决定取消,我希望应用立即停止写入。我可以看到从应用程序停止流动数据到USB活动指示灯停止闪烁之间存在延迟。几秒钟,通常高达约10秒。我发现应用程序保存在close()方法中,我假设,等待操作系统完成写入缓冲数据。每次写入后我都调用flush(),但这对延迟没有任何影响。我已经搜索了python文档的答案,但没有发现任何东西。
这完全取决于OS和文件系统。 “正确的”行为(在正常情况下,异步挂载)是close()立即返回;它应该只等待刷新,如果你明确fdatasync()。你不可能找到一种便携的方式来改变这种行为,因为它会在各个系统之间变化很大。 (从XP左右开始,Windows甚至不会在默认情况下将缓存写入USB驱动器。) –