> **Источник:** https://python-all.ru/3.0/library/pickletools.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `pickletools` – Инструменты для разработчиков pickle.

Этот модуль содержит различные константы, связанные с внутренним устройством модуля [`pickle`](https://python-all.ru/3.0/library/pickle.html#module-pickle), некоторые объёмные комментарии о реализации и несколько полезных функций для анализа сериализованных данных. Содержимое этого модуля полезно для разработчиков ядра Python, работающих над реализациями [`pickle`](https://python-all.ru/3.0/library/pickle.html#module-pickle) и `cPickle`; обычные пользователи модуля [`pickle`](https://python-all.ru/3.0/library/pickle.html#module-pickle), вероятно, не сочтут модуль `pickletools` актуальным.

#### `[pickletools.dis]pickletools.dis(pickle[, out=None, memo=None, indentlevel=4])`

Выводит символьную дизассемблерную распечатку pickle в файлоподобный объект

*out*

, по умолчанию

`sys.stdout`

.

*pickle*

может быть строкой или файлоподобным объектом.

*memo*

может быть словарём Python, который будет использоваться как memo для pickle; его можно использовать для выполнения дизассемблирования по нескольким pickle, созданным одним и тем же pickler. Последовательные уровни, обозначаемые кодами операций

`MARK`

в потоке, отступают на

*indentlevel*

пробелов.

#### `[pickletools.genops]pickletools.genops(pickle)`

Предоставляет

[*итератор*](https://python-all.ru/3.0/glossary.html#term-iterator)

по всем опкодам в pickle, возвращая последовательность троек

`(opcode, arg, pos)`

.

*opcode*

– экземпляр класса

`OpcodeInfo`

;

*arg*

– декодированное значение аргумента опкода в виде Python-объекта;

*pos*

– позиция, в которой находится этот опкод.

*pickle*

может быть строкой или файлоподобным объектом.

#### `[pickletools.optimize]pickletools.optimize(picklestring)`

Возвращает новую эквивалентную pickle-строку после удаления неиспользуемых опкодов

`PUT`

. Оптимизированный pickle короче, требует меньше времени на передачу, меньше места для хранения и распаковывается быстрее.
