Вопрос проверяет умение эффективно обрабатывать большие объёмы данных, не загружая их целиком в память, что критично для работы с логами, CSV, JSON и другими объёмистыми файлами.
Обработка больших файлов целиком часто невозможна из-за ограничений оперативной памяти. Решение — разбить файл на логические части (чанки) и обрабатывать их последовательно. Это называется потоковой обработкой (stream processing) или чтением с буферизацией.
chunksize.Самый простой способ — использовать встроенную функцию open(), которая по умолчанию возвращает итератор по строкам.
def process_large_file(file_path, chunk_size=1000):
with open(file_path, 'r') as f:
chunk = []
for i, line in enumerate(f):
chunk.append(line.strip())
if (i + 1) % chunk_size == 0:
# Обработать накопленный чанк
process_chunk(chunk)
chunk = []
# Обработать остаток
if chunk:
process_chunk(chunk)
def process_chunk(lines):
# Пример обработки: подсчёт строк
print(f'Обработано {len(lines)} строк')
# Здесь может быть запись в БД, агрегация и т.д.Библиотека pandas позволяет читать огромные CSV файлы порциями, что удобно для анализа данных.
import pandas as pd
chunk_iter = pd.read_csv('large_data.csv', chunksize=50000)
for chunk in chunk_iter:
# Каждый chunk — это DataFrame с 50000 строк
mean_value = chunk['column_name'].mean()
print(f'Среднее значение для чанка: {mean_value}')
# Можно сохранить результат или агрегировать дальшеВывод: Разбиение файла на части необходимо при работе с данными, превышающими доступный объём RAM. Используйте потоковое чтение, когда нужно обработать файл последовательно без полной загрузки в память, например, для ETL-процессов, анализа логов или подготовки данных для машинного обучения.