Протокол pickle версии 3, введённый в Python 3.0, несовместим с Python 2.x. 14
Некоторые особенности протоколов pickle разных версий:
- Протокол 0 (ASCII). 3 Самый старый протокол, работает в текстовом формате. 3 Он человекочитаемый, но крайне неэффективный с точки зрения размера данных и скорости обработки. 3
- Протокол 1 (бинарный). 3 Первая попытка создания бинарного формата для pickle, к сегодняшнему дню устарел и практически не используется. 3
- Протокол 2. 3 Введён в Python 2.3. 3 Добавил поддержку новых стилей классов (new‑style classes), что позволило корректно сериализовать объекты, использующие slots. 3
- Протокол 3. 3 Появился в Python 3.0, добавил поддержку сериализации объектов типа bytes. 3
- Протокол 4. 3 Введён в Python 3.4. 3 Значительно улучшил работу с большими объектами, оптимизировал сериализацию коллекций и добавил поддержку out‑of‑band данных. 3
- Протокол 5. 3 Самый современный, появился в Python 3.8. 3 Поддерживает буферизацию больших данных, позволяя передавать объекты через shared memory без копирования. 3