python的内置open()函数中缓冲的用途是什么? - python

Python说明文件:https://docs.python.org/2/library/functions.html#open

open(name[, mode[, buffering]])  

上面的文档说:“可选的缓冲参数指定文件所需的缓冲区大小:0表示未缓冲,1表示行缓冲,任何其他正值表示使用(大约)该大小(以字节为单位)的缓冲区。负缓冲表示使用系统默认值。如果省略,则使用系统默认值。”。
当我使用

filedata = open(file.txt,"r",0)  

要么

filedata = open(file.txt,"r",1)  

要么

filedata = open(file.txt,"r",2)

要么

filedata = open(file.txt,"r",-1) 

要么

filedata = open(file.txt,"r")

输出没有变化。上面显示的每一行以相同的速度打印。
输出:

豆先生是15部25-

罗宾·德里斯科尔(Robin Driscoll)撰写并由罗文·阿特金森(Rowan Atkinson)主演的分钟录像

标题字符。罗宾还写了不同的剧集

Driscoll和Richard Curtis,以及Ben Elton的一位。的十三

节目是1990年1月1日在ITV播出的,
直到

1995年10月31日,“晚安豆先生”。

豆先生”于1995年12月15日播出,还有一集“头发
通过

伦敦的Bean先生”,直到2006年才播出
尼克。

那么open()函数中的buffering参数如何有用?什么

最好使用哪个缓冲参数?

参考方案

启用缓冲意味着您不直接与操作系统的文件表示或文件系统API交互。取而代之的是,将大量数据从原始OS文件流读取到缓冲区中,直到被消耗为止,这时将有更多数据被提取到缓冲区中。就获得的对象而言,您将获得一个BufferedIOBase对象,该对象包装了底层RawIOBase(代表原始文件流)。

这有什么好处?与原始流进行良好的接口可能会导致较高的延迟,因为操作系统必须摆弄诸如硬盘之类的物理对象,并且在所有情况下这都是不可接受的。假设您想每5毫秒从文件中读取三个字母,并且文件位于硬壳旧硬盘甚至网络文件系统上。与其尝试每5毫秒从原始文件流中读取数据,不如将文件中的一堆字节加载到内存中的缓冲区中,然后随意使用它。

选择什么大小的缓冲区将取决于您如何使用数据。对于上面的示例,缓冲区大小为1个字符将是非常糟糕的,3个字符将是可以的,并且3个字符的任何大倍数都不会对用户造成明显的延迟将是理想的。

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python-如何检查Redis服务器是否可用 - python

我正在开发用于访问Redis Server的Python服务(类)。我想知道如何检查Redis Server是否正在运行。而且如果某种原因我无法连接到它。这是我的代码的一部分import redis rs = redis.Redis("localhost") print rs 它打印以下内容<redis.client.Redis o…

Python:图像处理可产生皱纹纸效果 - python

也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…