🔹 Память в Big Data: как не уронить процесс 🔹 Почему процесс падает по памяти при обработке гигантских наборов данных? 🔸 Загружая всё в память (списки, DataFrame, буферы), вы быстро достигаете лимита: ОС убивает процесс или сборщик мусора (garbage collection) начинает тратить много времени на освобождение — задержки и краши.
🔸 Chunk processing (обработка кусками) решает это: читаем/обрабатываем порцию данных, освобождаем память, переходим к следующей порции. Это нужно, когда размер данных > доступной RAM.
🔸 Stream-подход (потоковая обработка) — читать, преобразовать, отправить дальше без накопления. Стрим снижает давление на memory и уменьшает работу GC, т.к. объекты живут недолго.
🔸 Следите за ссылками: удержание ссылок мешает garbage collection. Используйте генераторы, дел, weakref для больших объектов и профилируйте память.
def read_in_chunks(path, size=1024*1024): with open(path,'rb') as f: while True: chunk = f.read(size) if not chunk: break yield chunk
for c in read_in_chunks('big.dat'): process(c) # обработал и забыл
📚 Мера: профайлер памяти + предпочитайте stream/chunk вместо полного чтения.
➡️ Мы в Telegram - Сетке - Дзен Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки