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)

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

Но есть проблема — им пользуются. И что делать будем?

Развивать альтернативные инструменты. Матлабом тоже когда-то пользовались. А ещё до этого Фортраном. Тоже все стонали, что куча легаси не позволяет взять и выкинуть Фортран. Ничего, выкинули.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

ускорить Питон вдвое

Передайте, пусть покупает процессор с два раза быстрым ядрами, а не два большим количеством ядер.

anonymous
()

3.11

Microsoft

Должно взлететь.

qaqa ★★
()
Ответ на: комментарий от no-such-file

Развивать альтернативные инструменты. Матлабом тоже когда-то пользовались.

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

seiken ★★★★★
()
Ответ на: комментарий от no-such-file

Развивать альтернативные инструменты.

Назовите шесть.

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

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

О как. А я-то думал это Lua и фабрисовский QuickJS.

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

А в IronPython нормально работает Ansible-runner?

Вот попробовал простой пример, вроде «1+2» работает:


Imports System
Imports System.IO
Imports IronPython.Hosting

Module Program
    Sub Main(args As String())
        dim Engine = Python.CreateEngine()
        dim Source = Engine.CreateScriptSourceFromFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/download/XXX/PythonSampleIronPython.py"))
        dim Scope = Engine.CreateScope()
        Source.Execute(Scope)
        dim CalculatorClass = Scope.GetVariable("calculator")
        dim CalculatorInstance = Engine.Operations.CreateInstance(CalculatorClass)
        Console.WriteLine("From Iron Python")
        Console.WriteLine("5 + 10 = {0}", CalculatorInstance.add(5, 10))
        Console.WriteLine("5++ = {0}", CalculatorInstance.increment(5))
    End Sub
End Module


А почему часть девопсеров такие ипанутые, и сразу банят за DotNet VB.NET и вот это все?
anonymous
()
Ответ на: комментарий от anonymous

А ты не заметил что-ли, весь мир сошел с ума.

Даже Microsoft упоролся и перестал развивать VB.NET подобно тому, что произошло с VBA 20 лет назад.

Но возможно оно и к лучшему, VB.NET будет язык программирования для потребления высокоуровневыми лентяями того, что накодят C# негры.

anonymous
()

Хм… я думал Python для удобства, а не для скорости придумали. Впрочем, если Гвидо знает, как ускорить Python - это хорошо. Приятно, что человек продолжает заниматься любимым делом.

anonymous
()

ускорить Питон вдвое

Давно пора.

hhhhacker
()

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

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

Не в тему, а зачем тебе тут иронпитон ?

mx__ ★★★★★
()

Ждем «Змея Горыныча»

anonymous
()

Энлардж йовр пайтон ап ту ту таймс!

slackwarrior ★★★★★
()

Это всё фигня, надо JIT/AOT

anonymous
()

Ещё один шаг к разрыву Питона на два языка: один легковесный для небольших скриптов, второй - для огромных корпоративных программ.

Добавили имитацию статической типизации, теперь ещё JIT будет. То есть идут куда-то в сторону C#. А C# идёт в сторону Питона - кортежи появились, вывод типов. LINQ близок к list comprehension, но более навороченный. То есть уже имеется один язык из той пары, на которую разорвётся Питон.

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

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

Ещё один шаг к разрыву Питона на два языка: один легковесный для небольших скриптов, второй - для огромных корпоративных программ

Там уже порвано всё что только можно. Из плохо совместимых c CPython есть Numba, RPython, Cython, из вообще не совместимых есть IronPython, Jython, GDPython.

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

4.2, в своей сфере применимости жив вполне

Это где? Я в своё время, 20 лет назад, в универе делал лабораторку по расчёту устойчивости схемы к вариациям номиналов компонентов на фортране (и уже тогда это считалось анахронизмом). А сейчас всё это делают в jupyter. Фортран остался разве что на суперчислодробильнях, но это вообще отдельная индустрия которая живёт своей жизнью.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

на числодробильнях

*this

делают в jupyter

Делают в numpy вы хотели сказать, юпитер же это просто морда?

уже тогда это считалось анахронизмом

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

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

Ну у меня соседи, которые занимаются гидродинамикой и публикуются в приличных журналах — вполне себе лабают её на современном диалекте

Числодробильни без GPGPU — это точно анахронизм. А какое GPGPU в фортране? Что они там умудряются на ЦП в своей гидродинамике посчитать? Пару молекул воды в год?

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

вполне себе лабают её на современном диалекте

Кто-то и на Коболе лабает. Это не значит, что оно живое.

Кстати, если ты хочешь критерий «живости», то применение в академической среде – это отличный критерий. Если уж из ВУЗов язык пропал, то он окончательно и бесповоротно сдох.

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

Крайне надуманно. Это всё решается достаточно просто если с самого начала озаботиться поддержкой конкурентности. А уж про менеджеры контекста и генераторы которые суть синтаксический сахар - вообще за уши притянуто

Nastishka ★★★★★
()
Последнее исправление: Nastishka (всего исправлений: 1)
Ответ на: комментарий от Nastishka

А уж про менеджеры контекста и генераторы которые суть синтаксический сахар - вообще за уши притянуто

С третьего питона генераторы уже приколочены к солидной доле стандартной библиотеки, и потому нет, это не синтаксический сахар. Как и исключения. For по итератору в питоне, как правило, работает именно через генераторы с исключением StopIteration.

Это всё решается достаточно просто если с самого начала озаботиться поддержкой конкурентности

Какого начала? Переписать все стандартные и сторонние либы на многопоток? Отличный план.

byko3y ★★★★
()

Рекламный слоган явно сплагиачен у Matz’а: «Ускорить Ruby в три раза». Он, правда, слово своё сдержал. Прикрученный JIT чудес не сотворил (в пять раз никто и не обещал), но зато никого не кинули на деньги. А вообще, время выбрано самое правильное - вот уже Linux дистрибутивы стали потихоньку рапортовать об успехе многолетнего перехода с python2 на python3 (из-за скобочек у функции print), и тут на сцену выходит… python4!

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

«Ускорить Ruby в три раза». Он, правда, слово своё сдержал.

Разве? Можно ссылку на тесты?

python4

3.11 и 3.12, вообще-то.

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

А C# идёт в сторону Питона - кортежи появились, вывод типов. LINQ близок к list comprehension, но более навороченный.

Ты даже для регистранта чересчур тупой 😱. Такую ахинею написать, надо еще постараться.

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

Можно еще просто вынуть у тебя головной мозг за видимой ненадобностью его тебе. А заполнить маленькими разноцветными воздушными шариками. Если убрать ГИЛ, придется переписать всю виртуальную машину заново. И гарантировать, что она будет выполнять все понаписанные программы корректно.

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

О как. А я-то думал это Lua и фабрисовский QuickJS.

Неправильно думал. Луа на говно больше похоже, нежели на ЯП.

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

а как интерпретируемость ускоряет прототипирование?

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

время компиляции? у голанга, например, оно минимально. да и у шарпа в debug-режиме тоже.

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

Неправильно думал. Луа на говно больше похоже, нежели на ЯП.

Боюсь даже предположить на что тогда похож питон.

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

луа ближе к bash скрипту, чем к ЯП.

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

время компиляции? у голанга, например, оно минимально. да и у шарпа в debug-режиме тоже.

Ну так конпеляй, я ж не против ¯_(ツ)_/¯

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

Боюсь даже предположить на что тогда похож питон.

Там только за комментарии – нужно гнать ссаными тряпками из почётного списка ЯП.

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

SQL наверно тоже на говно похож. Там комментарии такие же.

То ли дело пистон! Это же признак качества - собезьянничать комменты из unix shell / perl’а.

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