Мультипроцессинг в питоне вещь актуальная, особенно если вы занимаетесь ML сервисами. Но если вы попытаетесь использовать его в ваших сервисах — вы непременно наткнетесь на ряд подводных камней, которые почти нигде не обсуждается.
В докладе я бы хотел рассказать про наш опыт использования мультипроцессинга, с какими проблемами можно столкнуться, затаскивая его в реальные продакшн сервисы.
Из этого доклада можно будет узнать:
- В каких случаях нужно использовать shared memory и как корректно и эффективно с ней работать. Расскажу про атомарные счетчики ссылок как альтернативу стандартным методам контроля над шареной памятью в питоне.
- Скрытые баги в стандартных питоновских очередях. Мультипроцессорные очереди в питоне ведут себя контринтуитивно (например, говорить, что очередь пуста, когда в ней на самом деле лежит куча тасков), плюс они не совсем кроссплатформенные.
Эти вещи мало где обсуждаются, а проблемы, связанные с ними, напрямую аффектят сервисы. При этом сходу не понятно, что произошло не так и как можно это исправить.