随笔 - 65  文章 - 0 评论 - 0 阅读 - 28638
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

                                        图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   大明花花  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示