В конце ноября в Минске прошла очередная встреча Python Meetup. Четыре интереснейших доклада на около-python-овские темы, авторитетные спикеры. Кстати, впервые к нам приехал спикер не из Беларуси — это был Андрей Власовских, опытный докладчик из компании JetBrains.
В ноябрьском митапе мы рассмотрели опциональную типизацию в Python, асинхронное распределенное выполнение задач, введение в GIL и новый GIL, а также использование gevent для эмуляции высокой нагрузки.
Видео всех докладов, как и ссылки на презентации, можно найти под катом.
1. Введение в GIL и новый GIL, Андрей Нехайчик gnomeby, Wargaming.net | COOO «Гейм Стрим»
— Треды, отличия от потоков.
— Как использовать треды.
— Тестирование производительности (и облом).
— Представление GIL, как он работает.
— Освобождение по I/O, 100 тиков.
— Зачем нужен GIL.
— Проблемы переключения потоков (медленный захват).
— Проблема 100 тиков.
— Проблема отсутствия приоритетов и их типов.
— Новый GIL, 5 миллисекунд, drop_request.
— Когда drop_request не работает.
— Соревнование CPU и I/O тредов.
— Как борются с GIL: тезисы о numpy, Jython, multiprocessing.
2. Опциональная типизация в Python, Андрей Власовских, JetBrains
С появлением новых библиотек и диалектов для типизации Python вновь оживилась
дискуссия о необходимости и способах введения опциональных типов в Python. В докладе рассказано о текущем состоянии этой области, в том числе и об инициативах JetBrains.
3. Использование gevent для эмуляции высокой нагрузки, Александр Колесень, SiliconMint
Обязательное действие перед выпуском более-менее серьёзного проекта — тестирование производительности. На высоконагруженных проектах нужно точно знать, какую нагрузку они могут выдержать, причём заранее. Следовательно, нужен способ эмуляции высокой конкурентности, желательно чтобы в теории он позволял полностью загрузить канал траффиком. К тому же, неплохо было бы, чтобы для этого не нужно было использовать несколько десятков серверов. В докладе рассказано об опыте использования gevent для подобной задачи, что позволяет бы обойтись одним t1.micro инстансом, с которого выполняется тестирование.
4. Асинхронное распределенное выполнение задач. Stdlib, Celery, RQ и собственные велосипеды, Роман Иманкулов, doist.io
Когда необходимо заставить веб-приложение выполнить тяжелую работу без ухудшения user experience, или нужно по-быстрому собрать кластер на коленке, возникает потребность в распределенном выполнении очередей команд. В докладе рассмотрены варианты организации таких очередей подручными средствами, выяснено, чем так хорош Celery, есть ли у него достойные альтернативы, и как написать рабочий менеджер очередей в тридцать строчек кода.