什么是缓冲区?
缓冲区是内存空间的一部分,在内存中预留了一部分存储空间,这些空间用来缓存输入或输出的数据。
缓冲区有什么作用?
计算机内存的I/O速度远远高于计算机外设的I/O速度,如果不使用缓冲区,在执行I/O操作时,内存和外设就必须同步进行读写操作。
内存必须等外设输入(输出)一个字节后,才能再次输入(输出)一个字节,内存中的程序大部分时间都处于等待状态。
使用缓冲区,程序在执行过程中,会先将所有数据都输出到缓冲区中,然后继续执行其他操作,缓冲区中的数据由外设自行读取处理
当程序执行输入操作时,会先等外设将数据读入缓冲区中,无需同外设做同步的读写操作。
python的缓存机制
先来看一段code:
>>>num1 = int(1)
>>>num2 = int(1)
>>>print(num1 is num2)
True
>>>id(num1),id(num2)
(2895202681104, 2895202681104)
>>>str1 = "Tom"
>>>str2 = "Tom"
>>>print(str1 is str2)
True
>>>id(str1),id(str2)
(2895239095344, 2895239095344)
>>>num3 = float(2.0)
>>>num4 = float(2.0)
>>>print(num3 is num4)
False
>>>id(num3),id(num4)
(2895206805648, 2895237555312)
可以看到:有些变量的值相等,其内存地址也一致;有些变量的值相等,但内存地址不同。
在python中,字符串和整型对象都是不可变的(immutable)类型,因此python可以很高效地缓存它们。
Python2.3简单整数缓存范围是(-1,100),Python2.5.4以后简单整数缓存范围至少是(-5,256)。所有的短字符也都在缓存区。
这种缓存机制可以提高程序运行的效率,也可以减少内存负担。