有没有一种方法可以中止python写入操作,以使OS不需要将未写入的数据刷新到光盘上?
我正在将数据写入USB设备,通常为数兆字节.我在写时使用的是4096字节作为块大小,但是Linux似乎很早就缓存了一堆数据,然后将其缓慢写到USB设备中.如果在写入过程中的某个时刻,我的用户决定取消,我希望该应用程序立即停止写入.我可以看到,从应用程序停止数据流到USB活动指示灯停止闪烁之间存在一个延迟.几秒钟,通常最多约10秒.我发现该应用程序正处于close()方法中,正在等待操作系统完成写入缓冲数据的过程.我在每次写入后都调用flush(),但这似乎对延迟没有任何影响.我已经在python文档中搜寻了答案,但是什么也没找到.
解决方法:
它在某种程度上取决于文件系统,但是在某些文件系统中,如果您在分配文件之前(全部)删除文件,则写块的IO将永远不会发生.如果您截断它,以便将仍在写入的部分切掉,这也可能是正确的.
如果仍要访问数据,则不确定是否真的可以中止写入.同样,支持此功能的文件系统类型(例如xfs,ext4)通常不在USB记忆棒上使用.
如果要将数据刷新到光盘,请使用fdatasync().仅将IO库的缓冲区刷新到OS 1中就不会实现任何物理刷新.