Чтение файла построчно - влияние на диск?
В настоящее время я пишу скрипт на python, который обрабатывает очень большие (> 10 ГБ) файлы. Поскольку загрузка всего файла в память не вариант, я сейчас читаю и обрабатываю его построчно:
for line in f:
....
После завершения сценария он будет запускаться довольно часто, поэтому я начинаю думать о том, как такое чтение повлияет на срок службы моих дисков.
Будет ли скрипт читать строку за строкой или происходит какая-то буферизация на базе ОС? Если нет, я должен сам реализовать какой-то промежуточный буфер? Удар по диску часто вреден? Я помню, как читал что-то о том, что BitTorrent быстро изнашивает диски именно благодаря такому виду побитового чтения / записи, а не работе с большими кусками данных.
Я использую как жесткий диск, так и твердотельный накопитель в своей тестовой среде, поэтому ответы будут интересны для обеих систем.
1 ответ
И ваша ОС, и Python используют буферы для чтения данных большими блоками по соображениям производительности. На ваш диск не будет оказано существенное влияние при чтении файла строка за строкой из Python.
В частности, Python не может дать вам отдельные строки без предварительного сканирования, чтобы найти разделители строк, поэтому он будет читать фрагменты, анализировать отдельные строки, и каждая итерация будет брать строки из буфера, пока другой блок не должен быть прочитан, чтобы найти следующий набор линий. ОС использует буферный кеш для ускорения ввода-вывода в целом.