【发布时间】:2017-10-12 17:12:14
【问题描述】:
我想知道是否可以在我的 python 代码中做任何事情,使i/o 对磁盘更友好?
我知道,默认情况下,open() 使用启发式确定的缓冲区,其大小与磁盘的blocksize 相同。
据我了解,这仅决定数据何时刷新到磁盘缓存。这是正确的吗?
我有以下场景:
我正在连接各种不断流式传输数据的 websocket。我需要将此数据写入磁盘。理想情况下,我在接收和i/o 操作之间的延迟尽可能小,同时不会使用i/o 命令破坏我的磁盘。
我已经在使用单个线程来写入所有数据,而不是从各个线程中删除数据 (as has been pointed out here)。但我想知道将缓冲区设置为除default 之外的任何其他内容是否有意义?
我意识到无论如何负载都会令人望而生畏,但我很好奇在为这种情况编写 python 代码时是否有任何最佳实践来实现磁盘友好。
目前,我只是这样做:
with open(file, 'wb') as f:
f.write("stuff")
【问题讨论】:
-
硬盘和操作系统的缓存/缓冲是最便宜的优化,我想说 - 你确定你在弯曲自己的代码之前已经优化了吗?
-
“最理想的情况是,接收和 i/o 操作之间的延迟尽可能小”听起来很柔和。为什么需要快速 i/o 操作?
-
@tiwo,因为我想确保万一我的机器着火(比喻地说),我会丢失尽可能少的数据。
标签: python python-3.x io