python中的f.flush和os.fsync(f)

Python 中的 file.flush() 与 os.fsync()
2016年08月14日 23:28:48 JasonCcccc 阅读数 4562更多
分类专栏: Python
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/End0o0/article/details/52207302

在Python 官方文档https://docs.python.org/2/library/stdtypes.html?highlight=file%20flush#file.flush 关于file.flush() 的说明中写道:“ flush() does not necessarily write the file’s data to disk. Use flush() followed by os.fsync() to ensure this behavior.”flush方法并不强制把数据写入到磁盘文件中,那么flush方法为什么会这样呢?
其实这里有两种层面的buffering:

  1. Internal buffers
  2. Operating system buffers
    Internal buffers 创建在 runtime/library/language 中避免每次写操作都调用系统call,依次来加速运行。当需要把数据写入文件时,先写入internal buffer, 当internal buffer 溢满时,再调用系统call写入到文件中。
    所以为了确保数据写入到了文件中,file.flush() 之后要调用os.fsync()。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值