缓冲区,是内存空间的一部分,这部分空间只保存程序运行过程中的输入和输出数据。

                                        图1

如图一在文件操作过程中,因为内存中的信息处理速度要远远高于硬盘设备的处理速度,所以,内存中高速运行程序时,会把程序执行的结果保存到内存的暂存区域(缓冲区)里面。硬件设置会自动往暂存区域里面提取程序的结果。

# file = open("10.1.txt", "w")
# file.write("hello")
# # "hello"这段文件目前还在缓冲区里面,此时我们如果打开文件,在文件管道对象关闭之前,是看不到上面的"hello"
# input("让程序等到用户输入内容以后才结束")
# file.close()
# 默认情况下,只有在关闭文件管道对象时,才会把程序运行的结果冲刷出缓冲区,
# 如果出现程序运行到上面时,系统断电等问题,则会造成数据丢失。

"""
如果希望程序运行的结果,快速从缓冲区里面把数据冲刷出来。
可以使用file.flush()
"""
file = open("10.1.txt", "w")
file.write("hello")
input("让程序停顿一下")
file.flush()  # 冲刷缓存区,让数据不需要等待程序执行结束也可以提前写入到文件中。
file.write(" world")
input("让程序停顿一下")
file.close()  # 默认情况下,只有在关闭文件管道对象时,才会把程序运行的结果冲刷出缓冲区

注:

在以下几种情况下系统会刷新缓冲区的数据出来
1. 当文件关闭的时候自动刷新缓冲区
2. 当整个程序运行结束的时候自动刷新缓冲区
3. 当缓冲区写满了,也会自动刷新缓冲区
4. 手动刷新缓冲区 file.flush()就是手动调用

补充:

缓冲区有一部分为栈桢空间。是用来运行函数的。调用函数就是开辟栈桢空间的过程,调用结束之后,会自动释放栈桢空间。 

递归函数的运行需要占用的空间内存等性能消耗远比循环要高。由于递归本质上就是开辟和释放栈桢空间的过程。如果递归的层数过多,层数达到1000层则报错,将会被python解释器强制终止递归。所以使用递归时务必在函数调用前添加一个判断条件。建议对于简单操作少用递归,多用循环,除非这个问题真的很适合使用递归。而针对复杂操作多用递归,少用循环,因为复杂操作情况下的循环代码(4层以上嵌套循环)很容易懵。

posted on 2022-03-24 22:15  大明花花  阅读(115)  评论(0)    收藏  举报