All streams
Search
Write a publication
Pull to refresh

Comments 18

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

Лучше бы посчитали сколько для таких компаний

Для крупных предприятий с ежегодными расходами на AWS в 24-36 миллионов долларов и затратами на EC2-вычисления в 12-25 миллионов долларов, потенциальная экономия от того же обновления достигает 5,6 миллиона долларов ежегодно.

стоило бы держать собственную инфраструктуру... так, для сравнения..

Получается, они платят еще большие деньги чтобы из упертости не перейти на C++/Rust/Go?

Так это вечная тема. Ежедневные расходы на поддержание легаси часто в итоге превосходят ту немыслимую сумму, которая потребовалась бы, чтобы переписать всё с нуля вовремя.

А-ха-ха-ха. Они что, думают, что компании гоняют в контейнерах print('Hello, world!')?

Примерно любой мало-мальский бекенд — от десятка до нескольких десятков библиотек. У каждой зашиты ограничения на версии, и иногда это python<=3.10.
И вот ты уже не можешь просто перещёлкнуть версии, тебе нужно бампить версии библиотек. А там начинаются потери обратной совмести. Обновил условный bcrypt, и вот твой бекенд падает, когда пользователь вводит длинный пароль. Потому, что в старой версии просто брались первые 72 символа пароля, а в новой он кидает тебе exception, который ты не ждал.

И это если вообще получилось разрешить зависимости, и код запустился.

Или был у меня бекенд на Sanic ещё на Python 3.9. Памяти жрёт мало, работает быстро.
Обновляю на Python 3.12, нужно обновить Sanic. Обновил Sanic, тесты проходят. Пускаем в прод.
Смотрю графички: а он жрёт в два раза больше оперативки, причём по ней очень скачет, и в два раза больше нагрузка на CPU. То есть все тесты прошли, но по факту стало гораздо хуже.

Без правда хорошего набора тестов и ручного контроля после обновления — вообще никах.
То есть затраты времени и риски совершенно неиллюзорные — и уже прямо сейчас, до какого-либо профита. А выигрыш — может быть когда-нибудь потом, если повезёт, и если дев.опсы смогут "поджать" контейнеры.

Прекрасно помню свой шок, когда обнаружил, что код, написанный для Python 2.x , не выполняется в Python 3.x Просто потому, что в более новой версии по-другому примерно всё.

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

Переход с Python 3.10 на 3.13 означает колоссальное увеличение скорости на 42% с использованием на 20-30% меньше памяти.

Мне, поддерживающему несколько легаси-проектов, очень любопытно — а с Python 2.7? 🙃

Испытаешь релятивистское замедление времени от скоростей 3.13.

Это старая стратегия «работает — не трогай», но эти разработчики не осознают, что их «достаточно хорошие» версии Python обходятся их организациям в огромные суммы из-за ненужных расходов на облачные вычисления.

Так может это облачные вычисления обходятся организациям в огромные суммы, а не старые версии питона?

Всегда придерживался правила использовать предыдущую версию для новых проектов и то, если нет явных зависимостей с еще более ранними версиями. Вроде не подводило. То есть сейчас я возьму 3.12... хотя до релиза 3.14 неделя... Нет, уже 3.13 возьму )

Также был неудачный опыт обновления питона под JupyterHub-ом. Многое послетало. Не все удалось быстро пофиксить. Какое-то время даже использовал две виртуалки jh на 3.9 и на 3.11. Прирост скорости, действительно, был заметен, но переход был очень не бесшовным )

Для докеризованных приложений все гораздо проще, но и там пару раз наблюдал повышенный расход ресурсов при поднятии версии питона. Если не изменяет память, то внутри был Flask.

Переход с Python 3.10 на 3.13 означает колоссальное увеличение скорости на 42% с использованием на 20-30% меньше памяти. 

Если бы всё было так просто, люди бы давно перешли. Я на своих тестах заметил ускорени 5%. В реальности многие приложения вообще не упираются в производительность питона, а скорее во взаимолдействие с БД (иначе бы их давно переписали на го)

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

Да, обновляться надо. Не потому что вы сэномить 42% денег на аренду сервера, а чтобы не остаться у богом забытого софта без поддержки и разработчиков. Переехать с 3.10 на 3.12 сейчас самое время. На 3.13 - кто знает, ML либы могут легко отставать на год в поддержке новой версии питона, каждый сам пусть решает.

Если бы передо мной стояла задача сэкономить процессорное время на выполнение программы, я не писал бы её на питоне.

Поэтому, конечно, хорошо, если новую версию питона ускорили на 40%, но это само по себе не причина переходить на неё ну вот вообще. И что-то я сомневаюсь, что NumPy ускорили хотя бы на 1%.

40% — это если код чисто на питоне, перекладывание json-ов, сложная бизнес-логика или исследовательский проект, для которого ещё нет подходящей библиотеки. Для работы с базами или вводом-выводом всё упирается в скорость баз и ввода-вывода. Библиотеки для работы с данными и ML и так уже написаны на C/C++/Rust/etc.

Именно. Но дальше они пишут, что нужно пересмотреть подход к эффективности, потому что стало много ML и NumPu.

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

Да ну нафиг. Преписано важное на java и забыта проблема.

Но и сейчас изредка возникают атавистические боли типа "ой. есть/был же скрипт анализа логов под эту ситуацию.. Ааа. он еще на 2.7 был сделан тогда".

Идите нафиг с этим питоном и его версионностью.

Я бы изменил заголовок на "Использование Python обходится компаниям в миллионы долларов".

Вот во многом из-за этого я уже много раз делал «подход к снаряд^W пайтону» и отходил. Мало того, что 2.7 и 3.* это почти разные языки; так ещё и минорные версии, оказывается, отличаются ого-го как!

Тут поневоле хочется подождать, пока «всё устаканится»…

Серьезные дядьки не зря выбирают java... )

Ну как, ява обновилась, софт работать перестал. Тоже бывало пару раз.

Что за жесть? У питонистов 3.10 это устаревшая версия? Я понимаю если бы это был 2.7.

Sign up to leave a comment.

Articles