— Увлекаюсь fullstack: разрабатываю на python и typescript — Занимаюсь развитием Dev(Sec?)Ops практик — team lead в команде Chat, Raiffeisenbank — community lead, Python community Raiffeisenbank — https://xfenix.ru/ мой сайт — В айти давно, но пока не выгорел (чем отличается программист от лампочки? Лампочка после перегорания не работает)
о скорости python — О том как этот аспект собираются улучшать (и уже улучшают) — Частично о том куда развивается язык — О новостях Python Language Summit 2021 (проходил 11 и 12 мая)
описан в блоге PSF — Текст записан кем-то, докладчиков там описывают в третьем лице, поэтому данный доклад — плохой пересказ не очень хорошего пересказа
multiple Python interpreters in parallel in the same process, Victor Stinner & Dong-hee Na CPython improvements at Instagram, Dino Viehland Making CPython faster, Guido van Rossum
the same process Python ускоряется? Для начала познакомимся с одной инициативой: — https://www.python.org/dev/peps/pep-0554/ (PEP 554 -- Multiple Interpreters in the Stdlib) с 3.10
the same process Python ускоряется? Для начала познакомимся с одной инициативой: — https://www.python.org/dev/peps/pep-0554/ (PEP 554 -- Multiple Interpreters in the Stdlib) с 3.10 — Успех!
the same process Python ускоряется? Для начала познакомимся с одной инициативой: — https://www.python.org/dev/peps/pep-0554/ (PEP 554 -- Multiple Interpreters in the Stdlib) с 3.10 — Успех! — Или нет: они все ещё шарят GIL… *sad trombone*
by the GIL and async isn't the right solution for every problem (nor for every person). Multiprocessing is likewise valuable in some but not all situations» ???
some areas, but the benefits of subinterpreters include isolation and (potentially) performance. In particular, subinterpreters provide a direct route to an alternate concurrency model (e.g. CSP) which has found success elsewhere (← они это о GO!) and will appeal to some Python users»
is that this PEP also includes a promise that subinterpreters will no longer share the GIL. When that is clarified, the next question is "what is the point?". This is already answered at length in this PEP. Just to be clear, the value lies in: — increase exposure of the existing feature, which helps improve the code health of the entire CPython runtime — expose the (mostly) isolated execution of subinterpreters — preparation for per-interpreter GIL — encourage experimentation
the same process Python ускоряется? И наконец: — Ребята из доклада работают на тем, чтобы сделать запуск сабинтерпретаторов, в каждом из которых свой GIL! — Увы, работа пока далека от завершения, но по результатам их экспериментов скорость не уступает multiprocessing
https://www.python.org/dev/peps/pep-0384/ — Новый способ писать экстеншены (In other words, you use #include <hpy.h> instead of #include <Python.h>) — Большое ускорение на pypy и graalvm — Перспективы ускорения на Cpython
тем, что async def функции возвращают результат через StopIteration. Результат: 5% ускорения (на простых кейсах до 60%), парочка bpo’шек в 3.10 — Eager evaluation. Если на await мы можем получить результат сразу без блокирования, то можно не создавать таск. Повлияло и на asyncio.gather. Результат: 3% ускорения, пока в python не приняли
caching for bytecode — «теневой байткод». Инстаграм делает полную копию кешей и батйкода для «горячих» (видимо, часто используемых) функций и после запуска подменяет опкоды на более конкретные (зависит от рантайма). Результат: 5% ускорения, в cpython не примут, т.к. в 3.10 будет реализован свой механизм inline caching
watchers. Долго вчитывался в описание доклада, из текста максимально ничего непонятно, но от этой оптимизации есть толк (ха). Результат: 5% ускорения, при использовании с теневым байткодом
JIT и покрыли почти все опкоды. «Ну запустили и запустили» (с). Результат не ясен, но очень интересно — «static python». Идея похожая на mypyc или cython, но в рантайме. «import __static__» и погнали… Звучит очень интересно, но использовать пока нельзя
реализацию Cinder — ускорили Cpython на реальных сценариях на 20-30% (это не в синтетике в х10 выбивать — тут реальная жизнь (тм), представьте себе в масштабах инстаграма — выключили пару тысяч лишних серверов) — хорошая новость: это нельзя использовать и это неподдерживаемый форк. WHA~?
реализацию Cinder — ускорили Cpython на реальных сценариях на 20-30% (это не в синтетике в х10 выбивать — тут реальная жизнь (тм), представьте себе в масштабах инстаграма — выключили пару тысяч лишних серверов) — хорошая новость: это нельзя использовать и это неподдерживаемый форк. WHA~? Хорошая потому, что это все хотят вынести в CPython или вынести на уровень обсуждения. Успех!
— Mark Shannon предложил для более эффективного выполнения разбить куски программ на разные сегменты с разными оптимизациями — Уровней 5: от tier -1 до tier 3 — Предполагается что 2 и 3 tier это jit — Tier 1 планируется в PEP 659 https://www.python.org/dev/peps/pep- 0659/ начиная с python 3.10
решает, что засиделся в отставке и обращается к Microsoft. Те выделяют бюджет на то, что он хочет. Гвидо собирается вернуться к «корням» ~ где-то далее в 2020 ~ где-то в 2020 Вместе к с Mark Shannon и Eric Snow, которые тоже работают на Microsoft они выдвигают план по ускорению сpython в 5 раз(!) 1 2 Python ускоряется!1111
достигать такой драматической разницы. Про tiers of execution вы уже слышали ранее. Каждая стадия планирует ускорение python на 50% 10 октября 2021 октябрь 2020 Релиз python 3.10 Внедряется PEP 659 и мы получаем tier 1 production ready уровня 3 4 Python ускоряется!1111
ускорение языка, скорее всего). Например, zero overhead exception handling 10 октября 2023 (?) 10 октября 2022 Релиз python 3.12 CPython получит JIT!!! 5 6 Python ускоряется!1111
-- Exception Groups and except*. Самое классное — можно теперь будет «матчить» целые группы эксепшенов аля except *SpamError — Core developer’ы использовали в стандартной библиотеке property based тесты на основе hypothesis — Мейнтейнер pytest пушит более вербозные ассерты (отличная идея)
stdlib всё не очень. Из 208 модулей многие не используются. Некоторые совсем, большинство PR (50) — в asyncio и те составляют 3 процента от общего количества PR
3.9.5* — fastapi как framework of choice — оперативные собесы без многочасовых решений литкода — работаем по разумному балансу scrum — поддерживаем гибридные режимы работы — внутри строят инфраструктуру для разработчиков — мы все входим в Python community — вокруг много умных, открытых людей и классных профессионалов — мы стараемся поддерживать друг друга и поддерживать инициативу — онбордим людей, не бросаем на произвол судьбы — помогаем развиваться — не «самые умные мы развиваем вас», а мы развиваемся все вместе, не стесняемся делиться — стараемся следовать принципам MSA — docker — Kubernetes — вы научитесь писать raiffeisenbank Python ускоряется?