Что такое pickling / unpickling?

Pickling — это сериализация объекта в Python: преобразование объектной структуры в байтовый поток (byte stream), который можно сохранить в файл или передать по сети. Unpickling — обратный процесс: восстановление (десериализация) объекта из байтового потока обратно в живой Python‑объект. В Python за это отвечает модуль pickle с функциями dump/load и dumps/loads.
Подробный ответ

Что такое pickling

Pickling (сериализация) — это превращение объекта или целой иерархии объектов в линейное бинарное представление.

Ключевые моменты:

  1. Работает с большинством базовых и пользовательских типов (list, dict, пользовательские классы, вложенные структуры).

  2. Результат — байтовый поток, который можно записать в файл, отправить по сети или сохранить в БД как бинарное поле.

Пример: сохранить объект в файл:

import pickle

data = {"id": 1, "name": "TeoBrain"}
with open("data.pkl", "wb") as f:
    pickle.dump(data, f)  # pickling

Что такое unpickling

Unpickling (десериализация) — обратный процесс: взять байтовый поток и восстановить из него исходный объект или их иерархию.

Пример: прочитать объект из файла:

import pickle

with open("data.pkl", "rb") as f:
    data = pickle.load(f)  # unpickling
# data снова обычный dict

При unpickling модуль pickle создаёт новые объекты с тем же содержимым, что было у сохранённых.

Зачем это нужно в реальных проектах

Типичные сценарии использования pickling/unpickling в backend‑коде:

  1. Сохранение промежуточных результатов или состояния программы (кеш, сессии, очереди).

  2. Хранение обученных моделей и больших структур данных (особенно в ML‑части Python‑стека).

  3. Передача сложных объектов между процессами (например, в задачах очередей и worker‑систем).

Ограничения и риски, про которые любят спрашивать

Формат pickle специфичен для Python и может отличаться между версиями, это не кросс‑языковой формат (в отличие от JSON или Protocol Buffers).

Unpickling небезопасен для непроверенных данных: вызов pickle.load() на произвольном входе может привести к выполнению произвольного кода. Поэтому его используют только с доверенными источниками.

Фраза для собеседования

Pickling — это сериализация объектов в байтовый поток с помощью модуля pickle, unpickling — обратное восстановление объектов. Удобно для кешей, передачи данных и хранения моделей, но использовать pickle с непроверенным вводом нельзя из‑за рисков безопасности.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге