Нестандартные способы манипуляции памятью в Python Язык Python, его эволюция и использование

Доклад принят в программу конференции
Александр Боргардт
IVA Cognitive / jinncrafters(opensource community)

Последние 10 лет занимается исследованием новых подходов и созданием решений в областях рекламы, финтеха и ml. Является автором асинхронной библиотеки компонентов goblin-engineer (github.com/jinncrafters/goblin-engineer), основанной на использовании акторного подхода (actor-zeta github.com/jinncrafters/actor-zeta).
В область интересов входят вопросы разработки распределенных систем, параллельной и конкурентной обработки информации.
Хобби-проект - RocketJoe (github.com/jinncrafters/RocketJoe).

aa.borgardt@yandex.ru
Тезисы

Делать research и обрабатывать большие массивы данных на Python c одной стороны удобно, но с другой стороны из опыта отправки pipeline’ов в продакшн следует, что возникает целый ряд проблем:
* потребление сотни гигабайт RAM из-за некомпактного хранения данных в памяти;
* длительная обработка больших коллекций;
* низкая скорость загрузки и сохранения больших коллекций в память и на диск.

Пути решения проблем, связанных с особенностями Python, в частности с аллокацией и управлением памятью в процессе работы pipeline и его частей, будут рассмотрены в моем докладе. Один из способов решения проблемы — это переписать эвристики в PyMalloc, но это путь самурая. Чтобы решить проблемы, надо разобраться в том, как работает PyMalloc и устроена иерархия памяти в Python.

Я расскажу, как организовать off-heap для Python, покажу способы укладывания Python-классов компактнее, чем это делает Arena allocator, рассмотрю бинарную сериализацию без pickle, которая, не теряя интерфейса pickle, дает нам новые возможности.

Другие доклады секции Язык Python, его эволюция и использование