使用Python在磁盘上存储流内容的最佳方式



我想将数据直接流式传输到磁盘。

其中一种方法是简单地读取数据并写入文件,但我也想最大限度地减少RAM的使用。

with open("dummy.source", "br") as out, open("dummy.copy", "bw") as in_:
in_.write(out.read())  # this causes reading the whole stream into memory

我已经想出了一些手动的方法:

with open("dummy.source", "br") as out, open("dummy.copy", "bw") as in_:
while b := out.read(BUFFER_SIZE):
in_.write(b)

我真的必须手动逐个加载流吗?如果是,如何确定BUFFER_SIZE的最佳值?

缓冲区大小的最佳值很可能是python已经保留的缓冲区大小,在大多数系统上为8192字节,但任何低于该值的值都可以,因为IO无论如何都会被python缓冲。

您可以使用openbuffering参数来更改它,但8192是许多系统上的最佳大小。

实际上,您可以使用从当前的python解释器中获取它

from io import DEFAULT_BUFFER_SIZE

这是为了防止将来或对于给定的python解释器进行更改。

最新更新