Отчет Minsk Python Meetup

21 комментарий
Отчет Minsk Python Meetup

14 июня в столичной галерее Newday прошел митап, посвященный особенностям работы с языком программирования Python. Wargaming выступил организатором этого мероприятия.

Python – один из немногих языков, который быстро развивается благодаря большому количеству энтузиастов по всему миру. Эти люди не ищут коммерческой выгоды, а интересуются саморазвитием и совершенствованием инструментов. Собрать сообщество таких энтузиастов-питонщиков и стало главной целью митапа. И, как оказалось, в Минске этих людей не так уж мало – послушать доклады экспертов, обсудить особенности языка Python и получить ответы на интересующие вопросы пришло порядка 150 человек.

О чем же вещали эксперты нам расскажут слайды презентаций и видео докладов.

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

В этот день с презентациями выступили:
1. Александр Семенюк, компания Wargaming – «Python: легко и просто. Красивые решения обычных задач»

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

2. Стас Рудаков, компания Wargaming – «Дескрипторы в теории и на практике»

Основные пункты доклада:
• дескрипторы как мощные механизмы управления атрибутами объектов;
• недооцененность дескрипторов на практике, несмотря на то, что они появились в Python, начиная с версии 2.2
• пример создания удобных и расширяемых интерфейсных классов при помощи дескрипторов.

3. Никита Лесников, компания Wargaming – «Беглый обзор внутренностей интерпретатора Python»

В докладе описаны низкоуровневые особенности исполнения кода на Python. Рассмотрены различные компромиссы между быстродействием и защищенностью, которые продиктованы архитектурой интерпретатора. Также рассмотрены best practices по интеграции и оптимизации, которые могут быть полезны пользователям языка из различных областей.

4. Александр Зайцев, компания Caspowa – «Fabric для управления серверами»


Основные пункты доклада:
• преимущества использования fabric;
• fabfiles как компиляция списка команд на удалённом сервере;
• упорядочивание работы через ssh;
• гибкость и простота использования fabric.

Все презентации доступны на странице slideshare здесь, а видео всех выступлений можно посмотреть на youtube-канале Python Minsk

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

Можно смело утверждать – мероприятие прошло успешно. Об этом ярко свидетельствуют количество поданных заявок на участие в митапе (около 200) и то, что некоторые программисты, воодушевившись процессом, остались обсуждать наболевшие вопросы вплоть до закрытия заведения. Ну а чтобы не быть голословными, предлагаем посмотреть фотоотчет с места событий.

Однако приятные новости на этом не заканчиваются! Белорусские «питонщики» могут смело рассчитывать на то, что это было не последнее мероприятие такого рода. Уже сейчас формируется программа нового митапа, который также пройдет в самом центре Минска. Ну а в будущем запланировано проведения специальных кодинговых соревнование и много других ивентов. Пока же для программистов создана специальная страница в Facebook, где можно делиться впечатлениями от прошедших мероприятиях и высказывать пожелания по формату предстоящих встреч. Свои идеи можно высылать и по электронной почте - meetup@wargaming.net. И не забывайте подписываться на python-twitter

Хотите сообщить важную новость?

Пишите в наш Телеграм

Горячие события

GoWayFest 4.0 Online Edition Conference
11 июля — 12 июля

GoWayFest 4.0 Online Edition Conference

Минск

Читайте также

В VRP возвращают в офис за плохое поведение. Когда уже удалёнка всё?
В VRP возвращают в офис за плохое поведение. Когда уже удалёнка всё?

В VRP возвращают в офис за плохое поведение. Когда уже удалёнка всё?

По официальным данным, ежедневное число выявленных случаев коронавируса в Беларуси уменьшается. dev.by узнал, как ИТ-компаниям работается на удалёнке. В первой части рассказали про режим функционирования офисов на удалёнке, сегодня — когда и при каких условиях компании хотят вернуться в офис в полном составе. 
Где в 2020 году выучить Python с нуля? Топ онлайн-курсов и школ
Где в 2020 году выучить Python с нуля? Топ онлайн-курсов и школ

Где в 2020 году выучить Python с нуля? Топ онлайн-курсов и школ

Python входит в топ самых популярных языков программирования. Он прост и элегантен. Собрали хорошие курсы, которые подходят и для тех, кто любит самостоятельность, и для тех, кому удобнее работать с преподавателем. Почти все курсы рассчитаны на начинающих и после каждого можно получить подтверждающий прохождение сертификат.
1 комментарий
Лучшие онлайн-курсы, чтобы прокачать язык Python
Лучшие онлайн-курсы, чтобы прокачать язык Python

Лучшие онлайн-курсы, чтобы прокачать язык Python

Python — один из самых популярных высокоуровневых языков программирования общего назначения. За счёт достаточно простого синтаксиса, гибкости и масштабируемости, а также активного глобального сообщества пользуется огромным интересом у начинающих кодеров. Богатый набор инструментов и библиотек покрывает широкий круг самых разнообразных задач от веб-разработки и анализа данных до AI и научных вычислений. Это делает Python одним из самых востребованных языков среди работодателей, его применяют практически все ведущие ИТ-компании мира. TechRadar собрал 5 лучших курсов по Python с пяти образовательных онлайн-площадок.
Выходцы из Wargaming делают shopify для ресторанов
Выходцы из Wargaming делают shopify для ресторанов

Выходцы из Wargaming делают shopify для ресторанов

Андрей Мазовка, Максим Усачёв и Евгений Матков полтора года делают shopify для ресторанов в США — сервис, который помогает собирать заказы с разных онлайн-каналов. В марте, когда бизнесы несли потери из-за коронакризиса, клиенты KitchenHub наоборот росли. И даже просили временно отключить ресторан от системы — не справлялись с потоком заказов. 
3 комментария

Обсуждение

-2

фото как с похорон. змею хоронили ? :)

0

хоронили python 2й версии

0

рано. он еще вам крови попортит, а может еще и 3йку в гроб загонит

0

Ну как, уже выпилил кто-нибудь GIL ?

Максим Мельников
Максим Мельников Developer в Wargaming / Гейм Стрим
0

Могу ошибаться, но в Boo и Jython его кажется нет.

0

jython vs cpython... вагоны едут быстрее поезда? Или так: либо быстрая змея, либо многоголовая.

Максим Мельников
Максим Мельников Developer в Wargaming / Гейм Стрим
0

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

0

Практически все эти проблемы либо решаются, либо уже решены в PyPy. Единственная затянувшаяся проблема - это тот же GIL, который в PyPy сложно выпилить из-за их garbage collector-а. Но на Линуксах это довольно просто обходится через использование процессов вместо потоков: процессы там довольно лёгкие, а multiprocessing модуль даёт симпатичный интерфейс, аналогичный multithreading.

7

>>Но на Линуксах это довольно просто обходится через использование процессов вместо потоков: процессы там довольно лёгкие,
1. форк 50k процессов:
real 0m15.402s
user 0m0.264s
sys 0m6.192s
2. создание 50k потоков:
real 0m1.421s
user 0m0.172s
sys 0m1.408s

Код: http://pastebin.com/S70fAdUm
ЧЯДНТ?

Anonymous
Anonymous Developer в Gurtam
0

Кому-нибудь действительно нужно 50 тысяч потоков? Если там что-то постоянно считается, то что-то мне кажется, кол-во потоков равное кол-ву ядер вполне оптимально. А если не постоянно, то зачем столько потоков, если можно сделать какой-нибудь пул для асинхронных задач?

2

На самом деле тысячи потоков иногда действительно бывают нужны, посмотрите, например, на Erlang, где потоки (процессы в их терминологии, а на деле - вообще отдельная тема для разговора) создаются постоянно. Количество потоков, равное количеству процессоров - это тоже не совсем верно. Вернее, мнения по этому поводу расходятся. Кто-то говорит, что нужно запускать в 2 раза больше, кто-то - что по количеству процессоров плюс один и т.д. Объясняется это, как правило, деталями переключения контекста, системой сигналов и т.д. Точно могу сказать только, что последние процессоры от Intel используют гипертрединг, чтобы из, скажем, 4-х реальных CPU сделать 8 виртуальных, но вот в каких ситуациях виртуальный процессор реально выполняет свою работу, а в каких всё равно борется за ресурсы с другим виртуальным процессором на том же реальном CPU, это я уже не знаю. И вряд ли многие могут дать полноценный обоснованный ответ, тем более в условиях разных процессоров и операционных систем.

0

Вообще говоря, вы не совсем правильно интерпретировали мои слова. Процессы в Linux не такие же лёгкие, как потоки, но в целом всё ещё достаточно лёгкие, чтобы активно использовать их (насколько я понимаю, так сложилось исторически, и инженеры, занимающиеся ядром, приложили немало усилий для создания именно таких лёгких процессов). Достигается это за счёт максимального возможного шаринга ресурсов. Как pthread_create(), так и fork() используют внутри clone(), но pthread_create() шарит немного больше ресурсов. Кроме того, для fork() не копируется память процесса, а лишь создаётся таблица под copy-on-write, что гораздо дешевле. Ну и да, код внутри треда/процесса, как правило, занимает гораздо, гораздо больше времени, чем их создание.

Тем не менее, разница в 10 раз меня немного удивила. А давайте поэксперементируем и уберём ожидание окончания процесса и потока, а оставим лишь их создание. Есть подозрение, что pthread_join() и waitpid() сами по себе создают какой-то overhead, ибо объяснить 10-кратную разницу между fork() и pthread_create() мне, честно говоря, сложно. Я завтра попробую запустить упрощённый вариант, но если вы меня опередите, буду только рад.

1

Такое же отношение без ожидания завершения процесса/потока.
О различии между созданием процесса/потока хорошо написано в "Разработка ядра Linux" Р. Лава (гл. 3).
Переключения контекста легче между потоками - не нужно сбрасывать TLB.

0

Лучше пул потоков. Но бывает что все потоки пула блокируются. Тогда нужна стратегия расширения пула => создание новых потоков.
Все равно создание неебического кол-ва процессов или потоков на одном хосте - почти всегда плохая идея.

Anonymous
Anonymous Developer в Gurtam
0

Видимо тогда стоит и использовать те инструменты, где такая многопоточность действительно хорошо оптимизирована?

0

Это если есть такая возможность, а её чаще всего нет. Например, если вам нужно создать приложение по обработке естественного языка с высокой многопоточностью, то что вы выберете - Erlang, где есть многопоточность, но нужно писать всё NLP, или Python, где нужно немного заморочиться с многопоточностью, но зато есть отличный тулкит для NLP?

0

А можно посмотреть модифицированный код? Я тут закомментировал пару строк, и результаты получились гораздо интересней:

$ time ./test # pthread_create

real 0m0.708s
user 0m0.076s
sys 0m0.984s

$ time ./test 1 # fork

real 0m0.988s
user 0m0.024s
sys 0m0.944s

1

Код аналогичный. Скорее всего у вас результаты не первого запуска - на рез-т влияют кешированные структура ядра (таблица процессов, страничный кеши и пр.). Перезагрузите машину, чтобы сбросить кеши ядра. Разница будет на порядок различаться (в момент _первого_ запуска теста) между процессами и потоками.
А так да, после 1го запуска картина приблизительно такая же.

1

$ time ./test # pthread_create
real 0m0.072s
user 0m0.023s
sys 0m0.063s
$ time ./test 1 # fork
real 0m1.994s
user 0m0.037s
sys 0m1.250s
$ uname -a
Linux 3.9.8-1-ARCH #1 SMP PREEMPT Fri Jun 28 07:43:59 CEST 2013 i686 GNU/Linux

Юрий Красовский
Юрий Красовский Web Developer в Wargaming / Гейм Стрим
0

Мне понравилось. Спасибо.
В дополнение: http://youtu.be/OSGv2VnC0go

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже