Добавить в корзинуПозвонить
Найти в Дзене
CODERIKK

🔹 Память в 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) # обработал

🔹 Память в 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 вместо полного чтения.

#CODERIKK #De #Junior

➡️ Мы в Telegram - Сетке - Дзен

Буду рад вашей реакции здесь⬇️