Чтение файла построчно - влияние на диск?

В настоящее время я пишу скрипт на python, который обрабатывает очень большие (> 10 ГБ) файлы. Поскольку загрузка всего файла в память не вариант, я сейчас читаю и обрабатываю его построчно:

for line in f:
....

После завершения сценария он будет запускаться довольно часто, поэтому я начинаю думать о том, как такое чтение повлияет на срок службы моих дисков.

Будет ли скрипт читать строку за строкой или происходит какая-то буферизация на базе ОС? Если нет, я должен сам реализовать какой-то промежуточный буфер? Удар по диску часто вреден? Я помню, как читал что-то о том, что BitTorrent быстро изнашивает диски именно благодаря такому виду побитового чтения / записи, а не работе с большими кусками данных.

Я использую как жесткий диск, так и твердотельный накопитель в своей тестовой среде, поэтому ответы будут интересны для обеих систем.

1 ответ

Решение

И ваша ОС, и Python используют буферы для чтения данных большими блоками по соображениям производительности. На ваш диск не будет оказано существенное влияние при чтении файла строка за строкой из Python.

В частности, Python не может дать вам отдельные строки без предварительного сканирования, чтобы найти разделители строк, поэтому он будет читать фрагменты, анализировать отдельные строки, и каждая итерация будет брать строки из буфера, пока другой блок не должен быть прочитан, чтобы найти следующий набор линий. ОС использует буферный кеш для ускорения ввода-вывода в целом.

Другие вопросы по тегам