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

Denis Anikin

May 05, 2023
Tweet

More Decks by Denis Anikin

Other Decks in Programming

Transcript

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

    View Slide

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


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

    View Slide

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


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


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

    View Slide

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


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


    — Fullstack: python + typescript


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

    View Slide

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


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


    — Fullstack: python + typescript


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


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

    View Slide

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


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


    — Fullstack: python + typescript


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


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

    View Slide

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

    View Slide

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


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

    View Slide

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


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


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

    View Slide

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


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


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

    View Slide

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


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


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


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

    View Slide

  12. View Slide

  13. Python


    Language Summit

    View Slide

  14. View Slide

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


    Python Language Summit

    View Slide

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


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

    View Slide

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


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


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

    View Slide

  18. Cinder

    View Slide

  19. View Slide

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


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

    View Slide

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


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


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

    View Slide

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


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


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


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

    View Slide

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


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


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


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

    View Slide

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


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

    View Slide

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


    — eager evaluation


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

    View Slide

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


    — eager evaluation


    — inline caching for bytecode


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

    View Slide

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


    — eager evaluation


    — inline caching for bytecode


    — JIT 🔥 (asmjit)

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

    View Slide

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


    — eager evaluation


    — inline caching for bytecode


    — JIT 🔥 (asmjit)

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

    View Slide

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


    — eager evaluation


    — inline caching for bytecode


    — JIT 🔥 (asmjit)

    — Strict modules

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

    View Slide

  30. NoGIL

    View Slide

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


    NoGIL

    View Slide

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


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


    NoGIL

    View Slide

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


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


    — Работает!


    NoGIL

    View Slide

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


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


    — Работает!


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


    NoGIL

    View Slide

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


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


    — Работает!


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


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

    View Slide

  36. View Slide

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

    View Slide

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


    Subinterpreters

    View Slide

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


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


    Subinterpreters

    View Slide

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


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


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


    Subinterpreters

    View Slide

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


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


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


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

    View Slide

  42. View Slide

  43. Faster CPython

    View Slide

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

    View Slide

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


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

    View Slide

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


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

    View Slide

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


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


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

    View Slide

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

    View Slide

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


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

    View Slide

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


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


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

    View Slide

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


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


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

    View Slide

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

    View Slide

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


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

    View Slide

  54. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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


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

    View Slide

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

    View Slide

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


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

    View Slide

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


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


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

    View Slide

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


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


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


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

    View Slide

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


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


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


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

    View Slide

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


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


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


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

    View Slide

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


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


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


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

    View Slide

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


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


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


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

    View Slide

  67. View Slide

  68. 5х == JIT

    View Slide

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

    View Slide

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

    View Slide

  71. — Trace optimizer


    Планы на 3.12

    View Slide

  72. — Trace optimizer


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


    Планы на 3.12

    View Slide

  73. — Trace optimizer


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


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


    Планы на 3.12

    View Slide

  74. — Trace optimizer


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


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


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

    View Slide

  75. — 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 Slide

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

    View Slide