3

我目前正在编写一个处理非常大(> 10GB)文件的python脚本。由于无法将整个文件加载到内存中,我现在正在逐行读取和处理它:

for line in f:
....

一旦脚本完成,它将经常运行,所以我开始考虑这种读取会对我的磁盘寿命产生什么影响。

脚本是否会逐行读取,还是会发生某种操作系统驱动的缓冲?如果没有,我应该自己实现某种中间缓冲区吗?经常敲击磁盘实际上是有害的吗?我记得读过一些关于 BitTorrent 快速磨损磁盘的文章,正是因为这种按位读/写而不是操作更大的数据块。

我在测试环境中同时使用 HDD 和 SSD,因此两个系统的答案都会很有趣。

4

1 回答 1

7

出于性能原因,您的操作系统和 Python 都使用缓冲区来读取更大块的数据。从 Python 逐行读取文件不会对您的磁盘造成重大影响。

具体来说,如果不提前扫描以查找行分隔符,Python 无法为您提供单独的行,因此它会读取块,解析出单独的行,并且每次迭代都会从缓冲区中获取行,直到必须读取另一个块才能找到下一组线。操作系统通常使用缓冲区缓存来帮助加快 I/O。

于 2016-02-15T10:10:12.257 回答