Fork me on GitHub

Июнь 24–25

PyCon Russia 2019

Рус Eng

Вадим Пуштаев, Mail.Ru

Разработка асинхронных демонов

Расскажу про то, как мы разрабатываем многопроцессные сервисы с asyncio внутри. Упомяну сложности межпроцессного взаимодействия, использование разделяемой памяти, взаимодействия с очередями и хранилищами и еще много чего интересного.

Антон Брагин, JetBrains

Jupyter Notebooks — There is a Better Way

Ноутбуки для научных вычислений, в частности, Jupyter для Python, необычайно популярны, с ними работают как начинающие Python-программисты, так и профессионалы в области Data Science, а общее количество пользователей оценивается в шесть миллионов. Однако у Jupyter есть и противники, которые утверждают, что использование ноутбуков несовместимо с хорошими практиками программирования, полученные результаты зачастую невоспроизводимы, а интерактивная разработка осложнена отсутствием явной связи между кодом ноутбука и состоянием работающего вычислительного ядра.

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

Доклад будет интересен как любителям Jupyter, готовым под критическим углом взглянуть на саму концепцию ноутбуков для научных вычислений, так и его ненавистникам, которые не против дать Jupyter второй шанс, а также всем, кому интересны вопросы анализа и представления данных с использованием Python.

Ришат Ибрагимов, Яндекс

Квантовое программирование на Python: учимся на примерах

Многие слышали о квантовых компьютерах и о фантастических возможностях, которые они открывают. Но не многие знают, что технологии дошли до такого уровня, что уже сегодня любой желающий может написать простую программу на Python и запустить ее на реальном квантовом вычислителе. Разберем на примерах с кодом основы квантовых вычислений, научимся запускать программы на локальном симуляторе и удаленном квантовом компьютере.

Александр Хаёров, Chainstack

Прощай, Virtual Environments?

Python разработчику представлена огромная свобода по управлению зависимостями в отличие от прочих языков программирования. Почему так произошло и как это можно увязать с принципами дзена? Должен ли быть лишь один инструмент для управления зависимостями? В последние годы заметную популярность набрали Pipenv и Poetry. А еще опубликован PEP 517 (изоляция сборки), и что в нем напророчено нам? Я постараюсь ответить на все эти вопросы и расскажу, к чему готовиться, учитывая DevOps практики и наш собственный опыт.

Никита Гришко, Flo Health Inc

Evolution of dependency management

Если вы пишете на Python, то вы используете виртуальные окружения и pip для установки пакетов в них. Вероятно, у вас в проекте есть requirements.txt со всеми вашими зависимостями, а то и два, например requirements-dev.txt. Но что, если я вам скажу, что у этого старого доброго подхода есть проблемы и что существует не один инструмент, который пытается их решить?

В рамках доклада мы взглянем на существующие проблемы управления зависимостями и посмотрим, как разработчики пытались и пытаются их решить, пройдемся по таким инструментам как pip-tools, pipenv, flit, poetry и попытаемся выяснить, стоят ли они того, чтобы вы обратили на них внимание и принесли в свои проекты, или же это просто очередной поезд безумия мимо которого стоит пройти.

Владислав Блинов, Tinkoff.ru

Как написать чат-бота, если нет времени получать PhD?

В докладе я расскажу, как, не зная ничего или почти ничего про машинное обучение и глубокое обучение, написать своего чат-бота на Python. Разберём, какие есть open-source библиотеки для разработки чат-бота и как можно их соединить в единое решение, которое будет решать необходимые задачи.

Доклад будет полезен практикующим разработчикам на Python, которые так или иначе сталкиваются с обработкой естественного языка или разработкой чат-ботов. Но также доклад может быть интересен и разработчикам с другим бэкграундом, поскольку я буду разбирать довольно общие подходы к поиску данных и соответствующие библиотеки на Python.

Артем Королев, Тимур Кадыров, Dentsu Aegis Russia

Создание индустриальных датасетов для задач глубокого обучения

Мы бы хотели, используя Python, поговорить про тему, которую обычно не посмотришь на Coursera в курсе по deep learning и не прочитаешь на Medium в блоге по data science:

— откуда берутся картинки для разметки датасета

— стоит ли их размечать своими руками или сразу отдать подрядчикам и на биржу

— сколько нужно дней, чтобы собрать, удовлетворяющий требованиям заказчика, датасет

— как ставить ТЗ на разметку

— почему некоторые картинки вроде бы относящиеся к нужному классу на самом деле лучше не отправлять в train датасет

— а нужно ли брать картинку, если нужного объекта на ней очень мало

— нужно ли всегда ждать полного обучения нейронной сети или обучать ее итерационно

— и т.д и т.п.

Доклад рассчитан на тех людей, которые думают, что deep learning — это удел больших компаний с big data и огромными отделами data science. Мы расскажем, как подступиться к распознаванию картинок с нуля и вернуться к клиенту с результатом через пару недель, не используя vision API - Google, AWS или Azure.

Антон Патрушев, Spherical

Python&Rust: вместе веселей

Rust — горячая тема в современном мире разработки. Я коротко расскажу об этом сравнительно новом языке, о тех преимуществах, которые он предлагает разработчику. Доклад построен вокруг примера интеграции Rust в существующее Python-приложение, который демонстрирует лёгкость и удобство использования расширений, написанных на Rust и готовность связки Python-Rust к использованию в ваших Python-проектах.

Сергей Борисов, ДомКлик

Мастер-класс «Тестирование асинхронных приложений»

О важности тестирования знает каждый. Покажу, как мы в Домклик тестируем асинхронные приложения вместе с базой и другими инфраструктурными сервисами с помощью Docker и pytest.

В ходе мастер-класса:

— Вместе упакуем в Докер базовое веб-приложение

— … и покроем его тестами с головы до ног :)

А также:

— Сравним удобство unittest и pytest

— Посмотрим, как работают изнутри некоторые плагины pytest

— Воспользуемся моками там, где это действительно нужно

— Поборемся с медленными тестами

Понадобятся:

— Docker

Мастер-класс подойдет как тем, кто только начинает писать тесты на pytest, так и тем, кто хочет увереннее жонглировать фикстурами и опробовать новые подходы к CI / CD.

Злата Обуховская, Nvidia

Structured Concurrency. Что не так с асинхронностью в питоне?

Structured concurrency — подход к асинхронности, реализованный Натаниэлом Смитом в проекте Trio. Подход предполагает построение для связанных конкурентных потоков контекста выполнения, в котором легче реализовывать разные стратегии отмены, следить за освобождением ресурсов, обрабатывать ошибки.

Идея была подхвачена разработчиками из других языков (Kotlin, C, Swift) и породила массу вопросов:

— А если вместо списка равнозначных конкурентных потоков у нас теперь граф?

— Как безопасно передавать данные между контекстами?

— Кто будет следить за жизненным циклом таких графов?

— Как эффективно выполнять граф конкурентных потоков на одном ядре? А на нескольких?

— Как добиться детерминизма выполнения?

Между тем, эти вопросы так или иначе решались в других языках и технологиях.

В докладе я расскажу, насколько подходы из других языков применимы к современному питону.

Александр Артёменко, Яндекс

Макросы для Питониста

Мой доклад о том, какие средства могут быть использованы для того, чтобы дополнять синтаксис Python, добавляя в него необходимые возможности. Мы рассмотрим то, как устроены такие библиотеки, как pytest, macropy, patterns и что они делают для того, чтобы добиться таких интересных результатов. Также мы посмотрим на пример кодогенерации с помощью макросов в HyLang - lisp-образного языка, бегущего поверх Python.

Дмитрий Ходаков, Авито

CPU bound задачи в веб-сервисах на Python

Нам в Авито часто приходится применять в онлайне machine learning модель и совмещать асинхронность и масштабирование по CPU. Мы сталкиваемся с проблемами масштабирования и высокого потребления ресурсов итоговым сервисом.

В докладе я расскажу:

— Что делать, если нужно подружить io bound (сеть) и cpu bound (расчеты). Про multiprocessing в python и его дружбу с asyncio.

— Как мы ускорили в продакшене систему в 50 раз, отказавшись от pandas/numpy в пользу чистого python.

Доклад будет полезен опытным разработчикам Python, которые имеют дело с большим количеством вычислительных задач в веб-сервисах.

Дмитрий Орлов, Едадил

Асинхронный драйвер к RabbitMQ от автора

Когда я начал писать Open Source библиотеку для работы с rabbitmq используя asyncio, я хотел сделать простой и понятный интерфейс для каждого. Кажется, получилось, но не сразу. Эта история о том, как мне пришлось залезать в драйвер (pika), править там баги и написать свой драйвер, и как при этом не сломать текущее публичное API и не «навредить» пользователям. Чего не хватает в asyncio для того, чтобы писать сетевые библиотеки без боли. Недостатки сетевых протоколов, в частности, AMQP 0.9.

Никита Левонович, Квестоделы

Micropython для аркадных игр и квестов в реальности

Квестоделы применяют Micropython для разработки квестов в реальности последнего поколения и аркадных игр. Современный квеструм — это около 10 электронно-вычислительных устройств, общающихся по сети (MQTT). Большинство из этих ЭВУ — микроконтроллеры (ESP32), которые управляют периферийными устройствами: mp3-плееры, реле и различные датчики и используют устройства ввода-вывода: дисплеи, диоды, кнопки, клавиатуры и многие другие. Однако так было далеко не всегда, еще пару лет назад в квестах было гораздо меньше устройств, основным вычислительным модулем была Arduino, а общение между разными парами устройств могло происходить по разным протоколам.

Доклад будет посвящен формированию архитектуры, используемой командой Квестоделы, для решения подобных задач на Micropython, применительно к популярным микроконтроллерам от Espressif Systems.

Василий Литвинов, Intel

Profiling Python and C for fun and profit, or Pandas, go fast!

Python используется достаточно массово, в том числе в тех продуктах, где производительность становится критична. Некоторые алгоритмы или реализации плохо масштабируются, или же, бывает, разработчик просто хочет большего от своего кода.

В любом случае, для эффективной оптимизации разработчику нужно понимание «поведения» кода, а один из лучших способов получить такое понимание — это профилировка. Поиск узких мест, оценка влияния этих мест, сравнение результатов оптимизаций.

В докладе я сделаю краткий обзор существующих профилировщиков для Python с упором на инструменты, работающие в смешанном режиме (способные показать и Python, и native функции одновременно). Такие инструменты могут быть особенно интересны разработчикам библиотек, однако будут полезны и тем, кто использует эти библиотеки. Будут представлены и закрытые, и open source решения.

Использование будет проиллюстрировано на примере исследования и ускорения отдельных частей Pandas.

Алексей Кузьмин, ДомКлик

Поиск и оптимизация узких мест в Python

Меня зовут Алексей, и я очень хочу соврать, что у меня ничего не тормозит, память не кончается, а старый код не надо рефакторить! Но, к сожалению, это не правда и за свою жизнь я успел приобрести опыт ответа на вопросы «Что тормозит?», «Где течет?» и, конечно же, «Что с этим делать?».

В докладе я хочу поделиться своими лайфхаками и инструментами, которые сэкономят вам время и нервные клетки при отладке. В итоге у вас должно остаться понимание — какие места в программе обычно тормозят, какими инструментами это можно подтвердить или опровергнуть, и как исправить эти места так, чтобы проблем больше не было.

Antonio Cuni, core developer в PyPy

How PyPy can help for high-performance computing

Кирилл Борисов, Booking.com

Слишком умная квартира: IoT + Python + все остальное

Вся наша жизнь — работа. И каждый час, отдаваемый на заработок денег лишает все большего и большего количества сил. Ладно бы только это, но серая рутина еще и лишает шанса попробовать новомодные штучки, оставляя вас вновь клепать формочки на втором Питоне.

«Доколе?!» — с этой мыслью я решил привнести в свою жизнь все самое хайповое, что было в тот момент на повестке моего Твиттера. Умный дом! Третий Питон! Асинхронщина! Облака!

Замысел прост: сделать простую систему сбора (и подачи) показаний счетчиков/датчиков, по максимуму используя Питон и все самые модные вещи, до которых дотянусь: асинхронность, облачные вычисления, телеграммный бот и MicroPython (IoT-ради). Приходите посмотреть, что из этого получилось и какие идеи (увы) пришлось оставить за бортом.

Николай Марков, Aligned Research

Воркшоп «Пакетируем питонопроект от А до Я»

Многие разработчики не особо парятся с оформлением кода и обертыванием его в пакеты, особенно с появлением контейнеров. Да и вообще мало что понятно в этих пакетах — там и egg, и whl, и pipfile какие-то... На воркшопе мы поговорим о корректном оформлении проекта на Python (от аргументов командной строки до документации), пройдем классический процесс сборки пакета руками, посмотрим, что к чему, и разберемся, как выглядит экосистема пакетов питона в современном мире.

Андрей Власовских, JetBrains

Что будет в Python 3.8 и чего не будет

Что нового будет в Python 3.8? Об этом можно самостоятельно узнать из отличного документа What's New in Python 3.8, который не требует пересказа. В моём докладе речь пойдёт о том, что описано там лишь кратко или вообще не описано:

— Почему появятся эти новые возможности и какая история их появляения?

— Что уже обсуждается и разрабатывается, но не войдёт в Python 3.8?

Я поделюсь информацией, которую я узнал на PyCon US 2019 из докладов и общения с Python core developers. В частности, я расскажу о следующих областях:

— Новый синтаксис: x := expr, f(..., /, ...), f{expr=}

— Новые типы: Literal, Final, TypedDict

— Планы по typing и async/await

— Перспективы оптимизации Python: sub-interpreters, mypyc

Глеб Ивашкевич, datarythmics

Julia, Python и машинное обучение

Прогресс в машинном обучении невероятно быстр: постоянно появляются новые архитектуры нейронных сетей, а скоро начнут выходить и новые чипы для их обучения.

Благодаря этим изменениям в ландшафте отрасли более современные языки бросают вызов доминированию Python. Мы рассмотрим одного из конкурентов Python: язык Julia.

Julia создавалась как высокопроизводительный язык для технических вычислений. У Julia есть JIT компиляция, первоклассные средства метапрограмирования и совместимость с C и Python. Мы рассмотрим основы языка, инструменты для машинного обучения, которые в нем есть, и обсудим, стоит ли попробовать Julia, если вы занимаетесь data science.

Артем Малышев, drylabs.io

Инструменты domain driven design

Сложность бывает неотъемлемой и привнесённой. Из доклада вы узнаете, как организовывать первую и минимизировать вторую. Поговорим о том, как построить свой продукт вокруг решаемой проблемы, а не используемого фреймворка. Узнаем, в каком месте лучше вводить typing и dataclasses. Рассмотрим, где нам пригодится контрактное программирование и pydantic. Попробуем библиотеки из проекта dry-python. И, конечно, не обойдётся без тестов. Только практика. Никаких UML схем и абстрактных фабрик фасадов.

Иван Цыганов, Positive Technologies

(Без)опасные зависимости

Последние семь лет угроза «Использование компонентов с известными уязвимостями» занимает девятое место в рейтинге OWASP TOP-10. Мы рассмотрим, к каким последствиям может привести использование неактуальных версий библиотек и интерпретатора. Я покажу, как именно злоумышленник может воспользоваться известными уязвимостями в Django и Django Rest Framework, библиотеках SQLAlchemy, lxml, PyYAML и aiohttp-session и в самих интерпретаторах Python 2 и Python 3.

Адиль Хаштамов, Playrix

ETL инструменты в экосистеме Python

У любой организации, генерирующей данные, рано или поздно наступает момент, когда количество регулярных задач становится очень большим, появляются сложные зависимости между ними, они чаще падают и возникают проблемы деплоя.

В докладе я хочу раскрыть тему построения дата пайплайнов для сбора, обогащения и загрузки данных в ваши data lakes и data warehouses в контексте экосистемы Python. Расскажу, чем отличаются между собой инструменты Luigi, Airflow, Prefect, Celery, а также поделюсь продакшен опытом внедрения дата-пайплайнов на базе Luigi в компании Playrix.