LINUX.ORG.RU

Гвидо ван Россум хочет ускорить Питон вдвое

 ,


1

2

На онлайн-конференции Python Language Summit 2021 автор языка и сотрудник Майкрософт Гвидо ван Россум рассказал о запланированном на версию 3.11 увеличении скорости CPython.

За проект Ван Россум благодарит пандемию и Майкрософт. Ему стало скучно на пенсии, он попробовал наняться в Майкрософт, его взяли и разрешили самому выбрать, чем заняться. Таким образом Майкрософт «возвращает долги» Питону.

В прошлом году уже предлагался 4-летний «план Шеннона», обещавший ускорение на 50% в год в течении 4 лет за 2 миллиона долларов (500 тысяч в год). Одним из условий было, чтобы направление разработки определяло сообщество, а не корпорации.

Сейчас разработкой на деньги Майкрософт занимаются Марк Шеннон, Эрик Сноу и Гвидо Ван Россум, могут привлечь и других программистов. Обещают прозрачное сотрудничество с ядром разработчиков основной ветки и плавное накопление изменений. Не будет ни долгосрочных параллельных форков, ни внезапных патчей из 6000 строк. Все изменения будут доступны для обсуждения на Гитхабе.

Разработчики приняли следующие ограничения:

  • Не ломать совместимость со стабильным ABI.
  • Не ломать частичную совместимость API.
  • Не ломать и не замедлять граничные случаи (например, не кидать миллион объектов в стек eval).
  • Не делать код несопровождаемым.

Поэтому нельзя менять базовые вещи: объекты, типы, счёт ссылок; байткод, стековый фрейм; компилятор, интерпретатор; внутреннее устройство большинства объектов…

Для ускорения версии 3.11 планируют:

  • Адаптивный интерпретатор байткода.
  • Множество сравнительно небольших оптимизаций:
    фрейм стека;
    ускорение вызовов;
    аллокация.
  • Обработка исключений «без накладных расходов». (кавычки Ван Россума)

Гарантии успеха не дают.

Также хотят:

  • Ускорить запуск.
  • Изменить формат файлов .pyc.
  • Ускорить операции с целыми.
  • Фиксированное смещение для __dict__.
  • «Скрытые классы».
  • «Tagged numbers».

В последующих версиях хотят добиться 5-кратного ускорения. Вероятно, будут генерировать машинный код (iOS в пролёте). Могут что-то сделать с ABI и API.

Кто выиграет — очевидно. Не будет особой разницы для библиотек на Си (numpy, tensorflow), программ, тормозящихся вводом-выводом, многопоточного кода. И для неэффективных алгоритмов.

PEP 659: https://www.python.org/dev/peps/pep-0659/
Гитхаб: https://github.com/faster-cpython/

>>> Презентация

★★★★★

Проверено: Shaman007 ()
Последнее исправление: commagray (всего исправлений: 3)
Ответ на: комментарий от Reset

это точно. Страшно подумать, что за нагрузка на процессор будет в таком случае

anonymous
()
Ответ на: комментарий от eternal_sorrow

Можно было сократить всю новость до заголовка и этой строчки:

Гвидо ван Россум хочет ускорить Питон вдвое

Гарантии успеха не даёт.

eternal_sorrow ★★★★★
()

разработкой на деньги Майкрософт занимаются

lua наше всё

anonymous
()

we would like it to be competitive with fast implementations of scripting languages, like V8 for Javascript or luajit for lua

Гарантии успеха не дают.

ололо, то-то и https://www.tensorflow.org/js появился

Princesska ★★★★
()

Ему стало скучно на пенсии, он попробовал наняться в Майкрософт, его взяли и разрешили самому выбрать, чем заняться.

Ща у мамкиных хипсторов начнется мода на седые волосы и паркенсон.

TechnoMag ★★
()

Не будет особой разницы для библиотек на Си

Как это распарсить? Если что, питон уступает си не в пять раз.

anonymous
()

А может просто выкинуть его уже? Может, хватит насиловать стюардессу? Не ускоряется же, сколько его не пердолируй.

hateyoufeel ★★★★★
()

Гарантии успеха не дают

Я даю гарантию провала — благо, у Гвидо есть богатый опыт в этой нише как в самой Python Foundation, так и в Гугле.

С другой стороны, есть уже готовый проект PyPy, который хоть и может ускорять выполнение питоновой проги в 5-10-20 раз — но всё это, как правило, не имеет ничего общего с типовой pythonic-программой (назовем это Гвидо-style), то есть, специальные функции на Си из стандартных/сторонних либ и метапрограммирование через манкипатч, динамические классы, и __getattribute__/__setattribute__/etc.

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

Не будет особой разницы для библиотек на Си (numpy, tensorflow), программ, тормозящихся вводом-выводом, многопоточного кода. И для неэффективных алгоритмов

И тут я на белом коне со своей многозадачностью. Кстати, я сейчас уже отладил всю низкоуровневщину (по крайней мере всю из той, которую решил сделают работающей под релиз), оно компилится и работает под линем. Но теперь пришла очередь питоньих интерфейсов — а чо делать с Numpy/Pandas? Да, у Numpy есть recarray, который может жить в разделяемой памяти. Но и всё. Pandas вообще не умеет работать в разделяемой, более того, даже если форкнуть DataFrame, то pandas умудряется модифицировать копии данных в форкнутых процессах, и по итогу каждый дочерний процесс выжирает память под приватную копию общих данных. Не говоря уже о том, что в таком подходе изменения нельзя эффективно перекидыватть между процессами.

byko3y ★★★★
()
Ответ на: комментарий от Reset

Чтобы помочь питону его надо минимум в 10 раз ускорять.

Увы, но это на данный момент единственный интерпретируемый язык, который можно без особой боли использовать.

IPR ★★★★★
()
Ответ на: комментарий от grazor

И ни слова про GIL

Провторю себя на этой форуме еще раз: модель данных питона (данных, не интерпретатора) не позволяет выкидывать GIL. Допустим, ты выкинул GIL — что дальше? Ты получаешь адовую дичь с гонками по всей своей программе. Если учесть, что в питоне динамичными могут быть еще и классы, а еще есть замечательное вомбо-комбо в лице исключения+генераторы+менеджеры контекстов — и выясняется, что ты даже не можешь понять, кто к чему и когда обращается, и, соответственно, как это синхронизировать.

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

byko3y ★★★★
()
Ответ на: комментарий от anonymous

Как это распарсить? Если что, питон уступает си не в пять раз.

Обещают не ломать апи для библиотек на си.

x3al ★★★★★
()

Поэтому нельзя менять базовые вещи: объекты, типы, счёт ссылок; байткод, стековый фрейм; компилятор, интерпретатор; внутреннее устройство большинства объектов…

Не сидится спокойно Г.Россуму. Я тут позавчера как раз думал на тему - что он ещё может придумать в плане ломки совместимости со старыми версиями питона. Видимо, будет py4-professional и Микрософт Студия под него.

pacify ★★★★★
()
Ответ на: комментарий от anonymous

так простая многозадачность и есть волшебное средство от Гвидо?

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

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Орнул, ну покажи хоть свои достижения, мистер архитектор

anonymous
()
Ответ на: комментарий от IPR

Скорее, дело не в языке, а в «сахаре» и «включенных батарейках». И то и другое - наркотики. :)

dataman ★★★★★
()
Ответ на: комментарий от x3al

Как это распарсить? Если что, питон уступает си не в пять раз.

Обещают не ломать апи для библиотек на си

Проблема в том, что «ускорение питона» и «оставить вызовы внешних функций на Си» — это противоречащие друг другу тезисы. Разрабы PyPy поэтому переписывают стандартную библиотеку с Си на RPython. Потому что фундаментальные механизмы ускорения — это инлайн и скаляризация/локализация контейнеров. А этого нельзя сделать, когда у тебя программа писана на плохо совместимых друг с другом языках, где один дергает неоптимизируемые черные ящики другого. Потому питоновые библиотеки, вроде те же Numpy и Pandas, являются тем самым якорем, которые делает невозможным любые оптимизации.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Ну так если кому-то не нужны эти библиотеки — они и юзают pypy или (вроде как он чуть быстрее) ironpython.

Или ты предлагаешь Гвидо благословить pypy как новый дефолтный интерпретатор?

x3al ★★★★★
()
Ответ на: комментарий от fernandos

Лучше развивайте руру, там уже есть jit

Так они с PyPy тезис и взяли. Который в свою очередь сам развился из Unladen Swallow гугла, в котором и был Гвидо. Но проблема та же — эта штука несовместима с совместимостью с сушествующим питоньим кодом.

byko3y ★★★★
()

Чота как то несовременно. Сделайте Питон 40, пусть будет сломано всё

TooPar
()

Пожалуйста, не надо! Spring сейчас почти в 1.5 раза быстрее, чем Django. Если питон ускорят, он станет самым тормозным веб-фреймворком.

anonymous
()
Ответ на: комментарий от byko3y

эта штука несовместима с совместимостью с сушествующим питоньим кодом

А вот это уже надо было исправлять.

fernandos ★★★
()
Ответ на: комментарий от x3al

Или ты предлагаешь Гвидо благословить pypy как новый дефолтный интерпретатор?

А толку? Питон никому не нужен как язык — питон нужен как батарейки. А PyPy с батарейками плохо совместим. И потому что не ускоряет их, и потому что тяжело быть совместимым с языком, определенным конкретной реализацией. Потому IronPython и Jython точно так же мало кому нужны.

byko3y ★★★★
()
Ответ на: комментарий от grazor

И ни слова про GIL

А это по-твоему что:

Поэтому нельзя менять базовые вещи: объекты, типы, счёт ссылок; байткод, стековый фрейм; компилятор, интерпретатор; внутреннее устройство большинства объектов…

zabbal ★★★★★
()
Ответ на: комментарий от anonymous

Не будет особой разницы для библиотек на Си

Как это распарсить? Если что, питон уступает си не в пять раз.

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

question4 ★★★★★
() автор топика

Ведь есть D. Это отличная замена питону. Смысл ускорять мусор.

anonymous
()
Ответ на: комментарий от anonymous

RPython не нужен, переписывайте на питоне

Так питон неоптимизируем. RPython — это оптимизируемое подмножество питона. Даже сам PyPy не умеет оптимизировать питон — он оптимизирует интерпретатор на RPython, который выполняет программу на питоне.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Пусть пересывают PyPy на Си, будет вам оптимизация. Иначе, проект уйдет вместе с разрабами-rпитонистами.

anonymous
()
Ответ на: комментарий от Reset

Это было бы правдой, если бы от питона требовалась скорость.

evgeny_aa ★★☆
()
Ответ на: комментарий от th3m3

Помочь занять первенство, скорее всего.

anonymous
()

Гвидо ван Россум хочет ускорить Питон вдвое

Что такое ускорение целого языка вдвое? В каких попугаях

Crocodoom ★★★★★
()
Ответ на: комментарий от hateyoufeel

Не ускоряется же, сколько его не пердолируй.

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

Есть где допиливать :)

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Ну это как бы очевидно.

Вообще, кажется уже все научились не писать на питоне cpu-bound код, так что вообще мало что поменяется для нормальных существующих программ.

anonymous
()

И почему раньше не могли ускорить? Уже несколько проектов было с серьезными людьми и серьезными деньгами, и все сдулись.

anonymous
()
Ответ на: комментарий от Crocodoom

Что такое ускорение целого языка вдвое? В каких попугаях

Например в секундах на выполнение каких-то тестов.

question4 ★★★★★
() автор топика

Посмотрел на дату… Вроде сегодня не первое апреля и автор не панорама.паб

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.