ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

写入后中止向磁盘缓慢刷新?

2019-10-24 06:51:49  阅读:156  来源: 互联网

标签:flush file-io linux python


有没有一种方法可以中止python写入操作,以使OS不需要将未写入的数据刷新到光盘上?

我正在将数据写入USB设备,通常为数兆字节.我在写时使用的是4096字节作为块大小,但是Linux似乎很早就缓存了一堆数据,然后将其缓慢写到USB设备中.如果在写入过程中的某个时刻,我的用户决定取消,我希望该应用程序立即停止写入.我可以看到,从应用程序停止数据流到USB活动指示灯停止闪烁之间存在一个延迟.几秒钟,通常最多约10秒.我发现该应用程序正处于close()方法中,正在等待操作系统完成写入缓冲数据的过程.我在每次写入后都调用flush(),但这似乎对延迟没有任何影响.我已经在python文档中搜寻了答案,但是什么也没找到.

解决方法:

它在某种程度上取决于文件系统,但是在某些文件系统中,如果您在分配文件之前(全部)删除文件,则写块的IO将永远不会发生.如果您截断它,以便将仍在写入的部分切掉,这也可能是正确的.

如果仍要访问数据,则不确定是否真的可以中止写入.同样,支持此功能的文件系统类型(例如xfs,ext4)通常不在USB记忆棒上使用.

如果要将数据刷新到光盘,请使用fdatasync().仅将IO库的缓冲区刷新到OS 1中就不会实现任何物理刷新.

标签:flush,file-io,linux,python
来源: https://codeday.me/bug/20191024/1918505.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有