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

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

Подробный ответ

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

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

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

  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. Быстрая передача сложных объектов между процессами (например, в задачах очередей).

Но на собеседованиях также ожидают, что вы помните про ограничения и риски:

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

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

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

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