Python:如何设置文件的缓冲

一、什么是文件的缓冲?

1、说明

  将文件内容写入到硬件设备时,比如磁盘的扇区,则需要进行系统调用,这类I/O操作的耗时很长,为了减少I/O操作的次数,文件通常使用缓冲区(当需要写入的字节数不足一个块时,将数据放入缓冲区,当数据凑够一个块的大小后才进行系统调用);

2、文件的缓冲行为:

  A、全缓冲:只有当数据凑够一个块时,才进行系统调用(即I/O操作);

  B、行缓冲:碰到一个换行符,就进行一次系统调用;(多用于tty设备,也就是终端设备,如shell)

  C、无缓冲:不进行缓冲,需要及时的将数据发送到接口;(比如串口设备)

3、备注

  1. 系统调用:向操作系统申请一个服务,操作系统响应后,帮助调用硬件的驱动程序,这种操作称为I/O操作;
  2. 磁盘扇区:硬盘的内部圆形金属盘片被磁道划分成若干个扇形区域,这就是硬盘扇区。若干个扇区就组成整个盘片,硬盘的读写以扇区为基本单位。
  3. 对于磁盘这类的块设备,读写时不是按单个字节进行的,而是按块,每次读写一个块(一般一个块大小4096个字节);如果一个块的大小是4096个字节,则写入一个字节和写入4096个字节,都需要进行一次I/O操作,用时则是相同的;

二、Python中,文件的对象的缓冲行为

# python中普通文件默认的缓冲行为:全缓冲,当凑够一个块的数据(4096个字节,也是缓冲区的大小)后,才进行系统调用(也就是I/O操作);

# 缓冲区的大小,是根据平台(如python)和块设备(如磁盘)自身的属性相关的;

设置缓冲模式,及缓冲区大小:

  格式:open(file, 'r', buffering = n/1/0)

  A、buffering = n,n > 1 :设定缓冲模式为全缓冲,缓冲区大小为n个字节;

  B、buffering = 1:设定缓冲模式为行缓冲,遇到换行符 '\n' 时进行系统调用,也就是I/O操作,将数据写入磁盘;

  C、buffering = 0:此为无缓冲你模式,只要有数据,就直接进行系统调用,也就是进行I/O操作,将数据写入磁盘; 

 

posted @   何永灿  阅读(1400)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示