Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Куда двигается python в 2022 году?

Куда двигается python в 2022 году?

Рассказал о том куда двигается python: в первую очередь, о том как, когда и зачем он ускоряется, о nogil, cinder и прочих нововведениях.

Дополнительные ссылки:
https://www.youtube.com/watch?v=RAItctARwPs (видео доклада)
https://xfenix.ru/
https://github.com/xfenix

Denis Anikin

May 05, 2023
Tweet

More Decks by Denis Anikin

Other Decks in Programming

Transcript

  1. Куда двигается python
    в 2022 году?
    Денис Аникин, https://xfenix.ru

    View full-size slide

  2. — Техлид нескольких команд в Райфе


    Представлюсь
    Меня зовут Денис и я…

    View full-size slide

  3. — Техлид нескольких команд в Райфе


    — Community Lead Python Community тоже в Райфе :)


    Представлюсь
    Меня зовут Денис и я…

    View full-size slide

  4. — Техлид нескольких команд в Райфе


    — Community Lead Python Community тоже в Райфе :)


    — Fullstack: python + typescript


    Представлюсь
    Меня зовут Денис и я…

    View full-size slide

  5. — Техлид нескольких команд в Райфе


    — Community Lead Python Community тоже в Райфе :)


    — Fullstack: python + typescript


    — Много занимаюсь DevOps


    Представлюсь
    Меня зовут Денис и я…

    View full-size slide

  6. — Техлид нескольких команд в Райфе


    — Community Lead Python Community тоже в Райфе :)


    — Fullstack: python + typescript


    — Много занимаюсь DevOps


    — Мой сайт: https://xfenix.ru
    Представлюсь
    Меня зовут Денис и я…

    View full-size slide

  7. Перейдём к теме

    View full-size slide

  8. — Кратко о том, что было интересного на Python
    Language Summit 2021 и 2022 года


    О чем будем говорить?
    Название у меня опять размытое…

    View full-size slide

  9. — Кратко о том, что было интересного на Python
    Language Summit 2021 и 2022 года


    — О том что из этого уже сделано


    О чем будем говорить?
    Название у меня опять размытое…

    View full-size slide

  10. — Кратко о том, что было интересного на Python
    Language Summit 2021 и 2022 года


    — О том что из этого уже сделано


    — И что будет сделано
    О чем будем говорить?
    Название у меня опять размытое…

    View full-size slide

  11. — Кратко о том, что было интересного на Python
    Language Summit 2021 и 2022 года


    — О том что из этого уже сделано


    — И что будет сделано


    — И, в основном, про наше больное — про скорость!
    О чем будем говорить?
    Название у меня опять размытое…

    View full-size slide

  12. Python


    Language Summit

    View full-size slide

  13. — Проводится каждый год где-то в апреле-мае


    Python Language Summit

    View full-size slide

  14. — Проводится каждый год где-то в апреле-мае


    — Мероприятие предназначено для
    разработчиков cpython, pypy, jython и т.д. На нём
    они делятся проблемами и, возможно, решениями
    Python Language Summit

    View full-size slide

  15. — Проводится каждый год где-то в апреле-мае


    — Мероприятие предназначено для
    разработчиков cpython, pypy, jython и т.д. На нём
    они делятся проблемами и, возможно, решениями


    — Там собираются все ключевые разработчики и
    steering council
    Python Language Summit

    View full-size slide

  16. — Форк python 3.8 известной сети начинающейся на инст,
    заканчивающейся на грам


    Cinder
    Форк CPython от одной широко известной экстремистской 🤦 организации

    View full-size slide

  17. — Форк python 3.8 известной сети начинающейся на инст,
    заканчивающейся на грам


    — Ориентирован на производительность


    Cinder
    Форк CPython от одной широко известной экстремистской 🤦 организации

    View full-size slide

  18. — Форк python 3.8 известной сети начинающейся на инст,
    заканчивающейся на грам


    — Ориентирован на производительность


    — Содержит много интересных доработках


    Cinder
    Форк CPython от одной широко известной экстремистской 🤦 организации

    View full-size slide

  19. — Форк python 3.8 известной сети начинающейся на инст,
    заканчивающейся на грам


    — Ориентирован на производительность


    — Содержит много интересных доработках


    — Доработки апстримятся в основной бранч cpython!
    Cinder
    Форк CPython от одной широко известной экстремистской 🤦 организации

    View full-size slide

  20. — async def возвращает результат не через StopIteration


    Интересное в Cinder

    View full-size slide

  21. — async def возвращает результат не через StopIteration


    — eager evaluation


    Интересное в Cinder

    View full-size slide

  22. — async def возвращает результат не через StopIteration


    — eager evaluation


    — inline caching for bytecode


    Интересное в Cinder

    View full-size slide

  23. — async def возвращает результат не через StopIteration


    — eager evaluation


    — inline caching for bytecode


    — JIT 🔥 (asmjit)

    Интересное в Cinder

    View full-size slide

  24. — async def возвращает результат не через StopIteration


    — eager evaluation


    — inline caching for bytecode


    — JIT 🔥 (asmjit)

    — Strict modules
    Интересное в Cinder

    View full-size slide

  25. — async def возвращает результат не через StopIteration


    — eager evaluation


    — inline caching for bytecode


    — JIT 🔥 (asmjit)

    — Strict modules

    — Static python
    Интересное в Cinder

    View full-size slide

  26. — Анонсирован в октябре 2021 года


    NoGIL

    View full-size slide

  27. — Анонсирован в октябре 2021 года


    — Основан на python 3.9


    NoGIL

    View full-size slide

  28. — Анонсирован в октябре 2021 года


    — Основан на python 3.9


    — Работает!


    NoGIL

    View full-size slide

  29. — Анонсирован в октябре 2021 года


    — Основан на python 3.9


    — Работает!


    — Предложили закрыть под флаг компиляции


    NoGIL

    View full-size slide

  30. — Анонсирован в октябре 2021 года


    — Основан на python 3.9


    — Работает!


    — Предложили закрыть под флаг компиляции


    — Решения о принятии MR не принято :(
    NoGIL

    View full-size slide

  31. Множественные
    интерпретаторы

    View full-size slide

  32. — Работа ведется уже давно


    Subinterpreters

    View full-size slide

  33. — Работа ведется уже давно


    — Предлагается модуль interpreters в PEP 554


    Subinterpreters

    View full-size slide

  34. — Работа ведется уже давно


    — Предлагается модуль interpreters в PEP 554


    — По сути дает нам еще одну модель выполнения:
    CSP


    Subinterpreters

    View full-size slide

  35. — Работа ведется уже давно


    — Предлагается модуль interpreters в PEP 554


    — По сути дает нам еще одну модель выполнения:
    CSP


    — В PEP 684 предлагают каждому такому
    интерпретатору выделять свой GIL
    Subinterpreters

    View full-size slide

  36. Faster CPython

    View full-size slide

  37. В начале поговорим чем
    занимался последнее время
    Гвидо

    View full-size slide

  38. — В октябре 2019 покинул dropbox и ушел «на
    пенсию» (вспомним о «моржовой битве»)


    Краткая рабочая история

    View full-size slide

  39. — В октябре 2019 покинул dropbox и ушел «на
    пенсию» (вспомним о «моржовой битве»)


    — В ноябре 2020 года присоединился к Microsoft
    Краткая рабочая история

    View full-size slide

  40. — В октябре 2019 покинул dropbox и ушел «на
    пенсию» (вспомним о «моржовой битве»)


    — В ноябре 2020 года присоединился к Microsoft


    — Получил финансирование от Microsoft и
    использует его для работы над проектом «faster
    cpython»
    Краткая рабочая история

    View full-size slide

  41. В 2020 (вероятно) Марк Шеннон,
    Гвидо и Эрик Сноу начали проект
    faster cpython

    View full-size slide

  42. — Финансируется Microsoft и Bloomberg


    Ключевые факты о «проекте»/команде

    View full-size slide

  43. — Финансируется Microsoft и Bloomberg


    — Изначально ставил перед собой цель «ускорить питон в
    5 раз за 4 года» (к 2025 году)


    Ключевые факты о «проекте»/команде

    View full-size slide

  44. — Финансируется Microsoft и Bloomberg


    — Изначально ставил перед собой цель «ускорить питон в
    5 раз за 4 года» (к 2025 году)


    — Математика ускорения не отличается хитростью. 4
    релиза, каждый из которых ускоряется на 50%: 1.5^4 ~ 5
    Ключевые факты о «проекте»/команде

    View full-size slide

  45. «Не похоже ли это на
    популизм?»
    — Спросите вы

    View full-size slide

  46. Да, но в этом ничего


    плохого нет!
    — Отвечу я

    View full-size slide

  47. От 19% до 25% в среднем и до 60% в отдельных
    сценариях относительно python 3.10 (который
    итак быстрый)
    Как уже ускорился python 3.11?

    View full-size slide

  48. Как этого достигли?

    View full-size slide

  49. — Это благодаря «PEP 659 – Specializing Adaptive
    Interpreter» от Mark Shannon
    Тут несколько сложно

    View full-size slide

  50. — Это благодаря «PEP 659 – Specializing Adaptive
    Interpreter» от Mark Shannon


    — Если коротко: медленные куски байт-кода
    заменяются более быстрыми и более
    специфичными наборами инструкций
    Тут несколько сложно

    View full-size slide

  51. А теперь переходим к «four tiers
    of execution»

    View full-size slide

  52. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  53. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    — Tier 1: «теплый» код


    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  54. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    — Tier 1: «теплый» код


    — Tier 2: «горячий»


    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  55. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    — Tier 1: «теплый» код


    — Tier 2: «горячий»


    — Tier 3: полыхающий :)
    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  56. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    — Tier 1: «теплый» код <— это сделано в 3.11


    — Tier 2: «горячий»


    — Tier 3: полыхающий :)
    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  57. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    — Tier 1: «теплый» код


    — Tier 2: «горячий» <— здесь полу-jit


    — Tier 3: полыхающий :)
    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  58. — Tier 0: «прохладный» код, исполняющийся 1
    раз, например


    — Tier 1: «теплый» код


    — Tier 2: «горячий»


    — Tier 3: полыхающий :) <— здесь полный jit
    Марк Шеннон сформулировал 4 уровня
    исполнения

    View full-size slide

  59. JIT до 3.13
    версии не будет!
    — По заявлению Марка Шеннона в 2022 году

    View full-size slide

  60. Напоследок немного о
    ближайших планах — python 3.12

    View full-size slide

  61. — Trace optimizer


    Планы на 3.12

    View full-size slide

  62. — Trace optimizer


    — Мультипоточный параллелизм (wow!)


    Планы на 3.12

    View full-size slide

  63. — Trace optimizer


    — Мультипоточный параллелизм (wow!)


    — Уменьшение размера некоторых python объектов


    Планы на 3.12

    View full-size slide

  64. — Trace optimizer


    — Мультипоточный параллелизм (wow!)


    — Уменьшение размера некоторых python объектов


    — Уменьшение оверхеда на управление памятью
    Планы на 3.12

    View full-size slide

  65. — https://github.com/python/steering-council


    — https://pyfound.blogspot.com/2022/05/the-2022-python-language-summit_2.html


    — https://lwn.net/Articles/840248/


    — https://github.com/markshannon/faster-cpython/blob/master/tiers.md


    — https://github.com/faster-cpython/ideas/wiki/Python-3.12-Goals


    — https://peps.python.org/pep-0554/


    — https://peps.python.org/pep-0684/


    — https://peps.python.org/pep-0659/


    Интересные ссылки

    View full-size slide

  66. Спасибо за внимание!
    Денис Аникин, https://xfenix.ru

    View full-size slide