zoukankan      html  css  js  c++  java
  • 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:设定缓冲模式为行缓冲,遇到换行符 ' ' 时进行系统调用,也就是I/O操作,将数据写入磁盘;

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

  • 相关阅读:
    mongodb的安装和使用
    python小笔记
    爬取猫眼TOP100电影
    python测接口
    Python数据驱动(ddt)
    Python文件读写(csv、excel)
    python爬虫入门(转:http://www.cnblogs.com/voidsky/p/5490810.html)
    python bs4的使用
    Django 中的 model 继承
    HTTP幂等性
  • 原文地址:https://www.cnblogs.com/volcao/p/8810376.html
Copyright © 2011-2022 走看看