LINUX.ORG.RU

Средства оптимизации выполнения программ в Python

 , ,


0

3

Хотелось бы обсудить какие существуют сегодня средства оптимизации выполнения кода в Python. Читал про Psyco, который позволял ускорять выполнение программ в десятки раз, подменяя часть байткода на машинный код. Но если он так хорош, то почему давно заброшен? Был еще Shedskin, тоже неплохо ускорял процесс, и тоже заброшел. Куда деваются все подобные начинания?

Кажется был еще какой-то проект, но не суть. Почему не одно из них, при наличии таких неоспоримых качеств, не становится частью стандартной реализации Python (хотя-бы в виде опции)?

А что скажете про фиксированные бинарные файлы? Приходилось ли вам пользоваться этим способом? Это же как экзешник получается. Скорость наверно не повышает, но интересно в каких ситуациях это удобно?

У питона много способов ускорения, но они специализированные, numba, pypy, weld.rs

Если же нужно быстрый код, то используйте компилируемый язык

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

Она и так есть — в байткод.

Хочешь быстрый язык — возьми тот же rust.

Когда гуглю надоели тормоза и убогость типов питона в ML, он запилил уйму ML-библиотек под тот же swift, тоже вариант.

Питон сложно оптимизировать и это мало кому нужно: в cpython избегают любых усложнений кода, прочие реализации маргинальны (по сравнению с хотя бы v8).

Ну и есть же julia.

x3al ★★★★★ ()
Последнее исправление: x3al (всего исправлений: 1 )

средства оптимизации выполнения кода в Python.

Главное и единственное средство птимизации выполнения кода в Python - это оптимизация кода: больше сохранять промежуточных результатов в памяти и меньше производить умножений/делений.

anonymous ()

переписать на царской с++шке

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

Как думаете, возможно ли такое, что в Python 4 появится полноценная компиляция?

Врядли, просто в силу отсутствия строгой типизации

Если нужен компилируемый питоноподобный синтаксис есть язык. nim

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

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

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

Главное и единственное средство птимизации выполнения кода в Python - это оптимизация кода: больше сохранять промежуточных результатов в памяти и меньше производить умножений/делений.

Подразумевается реже использовать операторы умножения и деления? Чем это грозит?

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

В чем трудность?

В том, что полученный бинарник будет включать в себя весь этот Python и не будет нихрена быстрее выполняться.

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

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

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

Компиляция в машинный код в виде «впихнуть cpython и твой говнокод в один бинарник» давно есть как минимум для windows. Естественно, это не делает его быстрее

Сделать чистый питон быстрее сложно потому, что это питон. Нет нормальных типов, mypy убог и необязателен, JIT потребует разогрева и ОЧЕНЬ много работы (pypy далеко не идеален).

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

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

Это неправильный вопрос, правильный — «в чём смысл?».

Оверхед на питонические объекты никуда не денется. А упаковать всё в бинарник ты можешь и сейчас.

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

Получается медленный софт?

Ага.

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

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

А зачем они так делают? Меняют язык целиком. Вроде Python достаточно гибок и позволяет заменять куски программы (там где медленно) на код того же С++ и других.

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

Это и есть смена языка. И так гибок не python, а cpython (который по совместительству, наверно, самый медленный из питонов? Вроде как даже ironpython/jython в большинстве бенчмарков были быстрее)

x3al ★★★★★ ()

В этой статье ускоряли кристаллографические расчёты на Python.

All computations were performed on a Linux workstation equipped with two Intel Xeon E5-2698v4 processors (2 × 20 cores, operating at 2.2 GHz base frequency and 3.6 GHz maximum frequency) and 194 GB of RAM. The operating system is Kubuntu 18.04 with version 3.6.6 of the Python programming language. The Python language and all third-party libraries were installed from the official software repository of the Linux OS used in this work [except Pythran, which has been installed from the Python package index using the package installer pip (https://pypi.org/project/pip/)].

Мне бы такую рабочую станцию.

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

вопрос в том, когда python 4 будет, я не уверен, что после 3.9

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

это же немного, у нас на кластере, которому уже лет 8, есть ноды, где по 1tb памяти и ядер больше.

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

это же немного

Если постоянно заниматься расчётами, то немного. У меня вообще основная рабочая станция 4 ядра, 5 гигов. А рентгеновским дифрактометром управляет Dell Optiplex 745.

Я тут по формуле Дебая расчёты для наночастиц делал в DiffuseCode, debyer и понял, что слабовато железо для этого.

Мне бы https://xansons4cod.com/, наверно, хватило. Но у них база данных не работает.

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

Комаилирующийся из диалектов питона, типа Cython или numba.

t184256 ★★★★★ ()

Зачем вообще связываться с питоном? Это умирающая технология, никаких перспектив там нет, только что разгребать вагоны легаси. И с академической точки зрения ничего там интересного. Питон хорош только для студентов и научных сотрудников, которым некогда и незачем разбираться в программизме, а нужно тяп-ляп что-то посчитать.

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

Зачем вообще связываться с питоном?

Плагины.

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

Зачем вообще связываться с питоном? Это умирающая технология

Не то, что перл.

которым некогда и незачем разбираться в программизме, а нужно тяп-ляп что-то посчитать

Он всегда им и был, нет? На то он скриптовый язык.

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

В чем трудность?

В том что питон это один большой, запутанный узлами кусок говна. Даже автор опустил руки и свалил в закат. Никогда он не будет быстрым в нынешнем виде.

заинтересовался питоном

Интересоваться нужно было лет 10-15 назад. Сейчас у питона впереди только мерзость разложения. Учи голанг, это новый питон.

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

Дурачка-то выключи. Какой конкретно «плагин» тебя интересует?

Это тебя в первую голову касается.

Плагины GIMP, QGIS, gnumeric, …

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

Плагины GIMP, QGIS, gnumeric, …

Эталонный пример загнивания и разложения. Когда язычёк остаётся в загоне конкретных приложух. Расскажи про светлое будущее Visual Basic, например. А чо, Excel и Word побольше рынка занимают, чем gnumeric.

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

Плагины GIMP, QGIS, gnumeric, …

Что там нового можно придумать? То же самое легаси. Да, можно даже и зарабатывать на легаси, но это сомнительная карьера для молодого человека. Питон в смысле вакансий это только джанго, т.е. артефакт древних. Больше там ничего нет. Вся накрутка популярности идет благодаря вузам. Всё ценное, что есть в питоне, это обертки научных либ. За пределами этой ниши никакой практической ценности питон не имеет. Может какие-то возмущенные админы сейчас прибегут, но я скажу по секрету: админы с питоном это так себе админы, считай что инвалиды.

bread ()

хочешь оптимизировать питон, бери Dlang.

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

Насколько я знаю, на питоне много научного софта делается

Это не научный софт, это скорее одноразовые вычисления, которые делаются сишными библиотеками, а питон просто как клей.

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

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

Это не получится сделать без потери совместимости из-за особенностей работы CPython. Python-WM, не совместимая с CPython никому не нужна. Да и в целом никому это не нужно - если производительность становится критичной, то просто берут другой язык.

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

как клей

С этого вопроса поподробней

anonymous ()

Основное средство ускорения кода на питоне - вынос тяжелых вычислений в код на сишке.

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

Так человек же и просил

Человек не понимает чего просит. Ты тоже не понимаешь?

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

Скорее он не очень понимает что ему надо. Python – это вообще язык для скриптоты, создания DSL и формошлёпства сериализации JSON’чиков проектирования REST-API. Ещё как встраиваемый язык хорошо заходит. Писать на нём большие приложухи – занятие для мазохистов.

oldstable ()
Последнее исправление: oldstable (всего исправлений: 1 )
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.