Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
opennet.ru
Facebook открыл код Cinder, форка CPython, используемого в Instagram https://opennet.ru/55083/
☝️ Это ведь уже не первый форк CPython, где корпорации пытаются допилить его под свои нужды и срезать какие-то неоптимальные углы. Вспомнить хотя бы Pyston от Dropbox, который на разных бенчмарках показывает прирост производительности от 20 до 95% по сравнению с CPython. Хотя полностью они исходники так и не открыли.

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

Кстати, а вы видели вот такой документ? Это план по ускорению CPython от одного из core-контрибьюторов: https://github.com/markshannon/faster-cpython/blob/master/plan.md
Стоило только вспомнить про Pyston, как они в тот же день выпускают новый релиз с полностью открытыми исходниками. Заявляют, что можно просто заменить бинарник python на pyston и получить ускорение на 30%. К сожалению, внесены некоторые низкоуровневые изменения, из-за чего предсобранные пакеты (wheels) для CPython не подойдут, придётся все C/Rust/…-зависимости пересобирать из исходников.

https://blog.pyston.org/2021/05/05/pyston-v2-2-faster-and-open-source/
А нет ли у вас желания отвлечься от программирования на работе/учебе и ещё немного покодить для себя? Правила игры такие — я придумываю небольшую задачу (возможно даже интересную), мы все её решаем, а затем в процессе культурного перекидывания какашками без правил выясняем, чьё решение самое правильное и красивое. Язык — Python, само собой. Просто интересно понаблюдать за ходом мыслей других людей, как они подходят к решению и какими приёмами пользуются.
Интересная и забавная статья про то, почему нативные расширения (это которые написаны на C/Rust/…) для Python иногда работают не так быстро, как мы ожидаем. В конце статьи получилось так, что можно и на чистом Python сделать быстро, если хорошенько разобрать задачу 😅

https://pythonspeed.com/articles/python-extension-performance/
Ну очевидно же

#meme
Идея ускорения Python и правда как-то очень популярна в последнее время. Может оно всегда так было, а я просто не обращал внимания?

В конце прошлого года вышел .NET5, который теперь кросс-платформенный, полностью открытый и независимый от Microsoft (по крайней мере формально). Да, теперь оно работает не только на Windows. Для справки: наиболее популярными языками для .NET являются C# и F#. Предельно упрощенная схема работы в .NET вот такая:

Код на C# -> CIL -> машинный код

CIL — это промежуточное представление, в которое сначала компилируются все .NET-языки. Фишка в том, что .NET умеет оптимизировать этот CIL и компилировать его в машинный код, в том числе и в режиме JIT.

Есть такой проект — pyjion — который умеет конвертировать байт-код Python в CIL. Дальше хитрые механизмы .NET оптимизируют код и компилируют его на лету в эффективные машинные инструкции. А самая главная фишка — это не какой-то отдельный интерпретатор, это просто библиотека для ванильного CPython, так что весь ваш код должен работать точно так же. Всё, что нужно сделать — это установить на вашу машину .NET5 и добавить в начало программы (лучше даже до всех импортов) две строчки:

import pyjion
pyjion.enable()

Бабах! Дальше куски вашей программы будут в процессе выполнения компилироваться в машинные инструкции. Первый прогон кода может быть не таким быстрым из-за JIT-компиляции, зато последующие разы должны стать быстрее. На данный момент большого ускорения не обещают, но pyjion продолжает обрастать оптимизациями, специфичными для Python-кода, так что со временем получаемый машинный код будет более эффективным.

Звучит невероятно круто, почитайте!

https://tonybaloney.github.io/posts/running-python-on-dotnet-5-with-pyjion.html

#pyjion #jit
Судя по расписанию, на PyCon US, который состоится уже совсем скоро в онлайне, будут выступления как минимум про pyjion (JIT-компилятор на основе .NET5) и Cinder (форк CPython с оптимизациями, используемый в Instagram). В целом, это объясняет почему такая активность в последнее время. А почему Pyston вышел из анабиоза именно сейчас — загадка. Видимо, просто совпадение.

Расписание PyCon: https://us.pycon.org/2021/schedule/talks/

Собирается ли кто-нибудь его смотреть? Регистрация платная, если что.
В репо CPython переименовали главную ветку в main. Не знаю, зачем вам это знание 😅

Это переименование затронуло 1,4 тысячи пулл-реквестов и больше 700 форков. В процессе даже немножко сломался GitHub. В итоге инженерам из GitHub пришлось завершить переименование ветки в ручном режиме.

https://github.community/t/renaming-python-master-branch-to-main-1-4k-prs-700-repositories-triggered-server-http-error-500/178090
К какой Силы стороне принадлежишь ты?
Anonymous Poll
86%
master
14%
main
Forwarded from Python etc
Since Python doesn't have a char type, an element of str is always str:

'@pythonetc'[0][0][0][0][0]
# '@'


This is an infinite type and you can't construct in a strictly typed language (and why would you?) because it's unclear how to construct the first instance (thing-in-itself?). For example, in Haskell:

Prelude> str = str str

<interactive>:1:7: error:
• Occurs check: cannot construct the infinite type: t1 ~ t -> t1
Выступление пророка нашего Гвидо ван Россума, где он презентует идею тайп-аннотаций на PyCon 2015. Иногда любопытно погрузиться в историю и посмотреть, как оно всё тогда было. Кстати, выступление кроме исторической ценности имеет еще и образовательную — с тех пор не так уж и много поменялось, так что если вам нужно введение в тему, то тоже можно посмотреть.

https://youtu.be/2wDvzy6Hgxg
Forwarded from Кисель из IT
PyCon 2016, Гвидо еще не знает, как будут объявляться переменные с типами

Спасибо, что выбрали последний вариант, остальное выглядит очень сомнительно
Как сообщают в чате, вышел мажорный релиз Flask 2.0 и других связанных с ним библиотек (Werkzeug, Jinja, Click, ItsDangerous).

https://palletsprojects.com/blog/flask-2-0-released/

* Python 2 больше не поддерживается;
* Добавлены тайп-аннотации;
* Можно делать асинхронные обработчики запросов;
* Добавлены удобные декораторы-шорткаты для объявления обработчиков запросов с разными HTTP-методами.

Пора обновляться! Ну, или хотя бы аккуратно начинать задумываться об обновлении.

#flask
Forwarded from Aleksandr Bukin
🐍 Важные новости!

🏡 Друзья, через 2 недели мы проводим Pytup в онлайне.

В среду 26 мая в 17:00 Мск обсудим, когда нейросети заменят программистов, какие возможности Python используются в реальном мире чаще всего и как понять, что Поиск работает хорошо.

📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
По крайней мере два из трёх докладов выглядят интересными ☝️
⚡️Ломающие новости! ⚡️

Вчера на Language Summit, проходящем в рамках PyCon US, стало известно, что Гвидо ван Россум, Марк Шеннон и Эрик Сноу работают фулл-тайм над проектом по ускорению CPython. Спонсирует работу Microsoft.

Работа пока что происходит вот в этой организации на GitHub: https://github.com/faster-cpython/. Там у них есть свой форк CPython.

Кстати, вот здесь лежит презентация Гвидо с этого Language Summit: https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf
Я пока только пытаюсь вникнуть, что всё это значит, но первые результаты работы по ускорению CPython уже можно увидеть в PEP 659: https://www.python.org/dev/peps/pep-0659/

Похоже, что в CPython хотят вкрутить какое-то подмножество полноценного JIT-компилятора.