buffer
默认缓冲是4字节(B)即 4096
磁盘的读写
在了解缓冲之前现有了解磁盘这类的块设备读写原理,磁盘的读写是按照块来的,例如说 一个块的存储空间大小为4096B,那么写入1B和写入4096B所需要的时间是相同的,都需要进行一次I/O,这么看来 当我们的文件写入 小于块的空间大小时候 就会进行多次的I/O操作,我们都知道I/O操作会耗费性能,所以伟大的科学家们就想了一个办法,设置一个缓冲区,当缓冲区里面达到块大小的时候才进行I/O操作将缓冲区的数据写入。
Python缓冲区的分类
- 全缓冲
- 行缓冲
- 无缓冲
什么是全缓冲?
我们设置缓冲区的大小,例如设置成 1024B,当达到这个大小的时候就会调用flush()函数,进行一次I/O操作,这种模式适用于大量数据的批量写入,减少磁盘写入次数,提高效率。
python
file = open('example.txt', 'w', buffering=4096) # 使用4KB缓冲
什么是行缓冲?
每次遇到换行符("\n")的时候就调用flush()函数,进行一次I/O操作;适用于以行为单位进行数据写入,确保每一行数据都能及时刷新到磁盘
python
file = open('example.txt', 'w', buffering=1) # 行缓冲模式
什么是无缓冲?
有数据进来就进行I/O操作,确保实时数据写入。
python
file = open('example.txt', 'w', buffering=0) # 无缓冲模式