Было бы интересно?
Anonymous Poll
50%
Я за любой кипиш
34%
Пожалуй, но сомневаюсь, что найду время
16%
Я больше люблю просто почитать
Интересная и забавная статья про то, почему нативные расширения (это которые написаны на C/Rust/…) для Python иногда работают не так быстро, как мы ожидаем. В конце статьи получилось так, что можно и на чистом Python сделать быстро, если хорошенько разобрать задачу 😅
https://pythonspeed.com/articles/python-extension-performance/
https://pythonspeed.com/articles/python-extension-performance/
Python⇒Speed
The hidden performance overhead of Python C extensions
A compiled language like Rust or C is a lot faster than Python, with some caveats. Learn about the hidden overhead you’ll need to overcome.
Идея ускорения Python и правда как-то очень популярна в последнее время. Может оно всегда так было, а я просто не обращал внимания?
В конце прошлого года вышел .NET5, который теперь кросс-платформенный, полностью открытый и независимый от Microsoft (по крайней мере формально). Да, теперь оно работает не только на Windows. Для справки: наиболее популярными языками для .NET являются C# и F#. Предельно упрощенная схема работы в .NET вот такая:
Есть такой проект —
Звучит невероятно круто, почитайте!
https://tonybaloney.github.io/posts/running-python-on-dotnet-5-with-pyjion.html
#pyjion #jit
В конце прошлого года вышел .NET5, который теперь кросс-платформенный, полностью открытый и независимый от Microsoft (по крайней мере формально). Да, теперь оно работает не только на Windows. Для справки: наиболее популярными языками для .NET являются C# и F#. Предельно упрощенная схема работы в .NET вот такая:
Код на C# -> CIL -> машинный кодCIL — это промежуточное представление, в которое сначала компилируются все .NET-языки. Фишка в том, что .NET умеет оптимизировать этот CIL и компилировать его в машинный код, в том числе и в режиме JIT.
Есть такой проект —
pyjion
— который умеет конвертировать байт-код Python в CIL. Дальше хитрые механизмы .NET оптимизируют код и компилируют его на лету в эффективные машинные инструкции. А самая главная фишка — это не какой-то отдельный интерпретатор, это просто библиотека для ванильного CPython, так что весь ваш код должен работать точно так же. Всё, что нужно сделать — это установить на вашу машину .NET5 и добавить в начало программы (лучше даже до всех импортов) две строчки:import pyjionБабах! Дальше куски вашей программы будут в процессе выполнения компилироваться в машинные инструкции. Первый прогон кода может быть не таким быстрым из-за JIT-компиляции, зато последующие разы должны стать быстрее. На данный момент большого ускорения не обещают, но
pyjion.enable()
pyjion
продолжает обрастать оптимизациями, специфичными для Python-кода, так что со временем получаемый машинный код будет более эффективным.Звучит невероятно круто, почитайте!
https://tonybaloney.github.io/posts/running-python-on-dotnet-5-with-pyjion.html
#pyjion #jit
tonybaloney.github.io
Running Python on .NET 5
An update on the Pyjion project to plug a JIT into CPython using the .NET 5 CLR JIT compiler
Судя по расписанию, на PyCon US, который состоится уже совсем скоро в онлайне, будут выступления как минимум про
Расписание PyCon: https://us.pycon.org/2021/schedule/talks/
Собирается ли кто-нибудь его смотреть? Регистрация платная, если что.
pyjion
(JIT-компилятор на основе .NET5) и Cinder
(форк CPython с оптимизациями, используемый в Instagram). В целом, это объясняет почему такая активность в последнее время. А почему Pyston вышел из анабиоза именно сейчас — загадка. Видимо, просто совпадение.Расписание PyCon: https://us.pycon.org/2021/schedule/talks/
Собирается ли кто-нибудь его смотреть? Регистрация платная, если что.
В репо CPython переименовали главную ветку в
Это переименование затронуло 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
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
GitHub Support Community
Renaming Python "master" branch to "main" (1.4k PRs & 700 repositories) triggered server HTTP error 500
Hi, the default “master” branch of the python/cpython project was renamed to “main”. The dialog announced that 1.4k pull requests and 747 repositories will be impacted. A few minutes later, a “main” branch was created, the default remains “master”, and h…
Forwarded from Python etc
Since Python doesn't have a
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:
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
https://youtu.be/2wDvzy6Hgxg
YouTube
Type Hints - Guido van Rossum - PyCon 2015
Forwarded from Кисель из IT
PyCon 2016, Гвидо еще не знает, как будут объявляться переменные с типами
Спасибо, что выбрали последний вариант, остальное выглядит очень сомнительно
Спасибо, что выбрали последний вариант, остальное выглядит очень сомнительно
Как сообщают в чате, вышел мажорный релиз Flask 2.0 и других связанных с ним библиотек (Werkzeug, Jinja, Click, ItsDangerous).
https://palletsprojects.com/blog/flask-2-0-released/
* Python 2 больше не поддерживается;
* Добавлены тайп-аннотации;
* Можно делать асинхронные обработчики запросов;
* Добавлены удобные декораторы-шорткаты для объявления обработчиков запросов с разными HTTP-методами.
Пора обновляться! Ну, или хотя бы аккуратно начинать задумываться об обновлении.
#flask
https://palletsprojects.com/blog/flask-2-0-released/
* Python 2 больше не поддерживается;
* Добавлены тайп-аннотации;
* Можно делать асинхронные обработчики запросов;
* Добавлены удобные декораторы-шорткаты для объявления обработчиков запросов с разными HTTP-методами.
Пора обновляться! Ну, или хотя бы аккуратно начинать задумываться об обновлении.
#flask
Forwarded from Aleksandr Bukin
🐍 Важные новости!
🏡 Друзья, через 2 недели мы проводим Pytup в онлайне.
⏱ В среду 26 мая в 17:00 Мск обсудим, когда нейросети заменят программистов, какие возможности Python используются в реальном мире чаще всего и как понять, что Поиск работает хорошо.
📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
🏡 Друзья, через 2 недели мы проводим Pytup в онлайне.
⏱ В среду 26 мая в 17:00 Мск обсудим, когда нейросети заменят программистов, какие возможности Python используются в реальном мире чаще всего и как понять, что Поиск работает хорошо.
📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
Pytup
Приглашаем Python-разработчиков с любым опытом на Pytup Online 26 мая в 17:00 по Москве.
⚡️Ломающие новости! ⚡️
Вчера на 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
Вчера на 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
GitHub
faster-cpython
faster-cpython has 8 repositories available. Follow their code on GitHub.
Я пока только пытаюсь вникнуть, что всё это значит, но первые результаты работы по ускорению CPython уже можно увидеть в PEP 659: https://www.python.org/dev/peps/pep-0659/
Похоже, что в CPython хотят вкрутить какое-то подмножество полноценного JIT-компилятора.
Похоже, что в CPython хотят вкрутить какое-то подмножество полноценного JIT-компилятора.
Python.org
PEP 659 -- Specializing Adaptive Interpreter
The official home of the Python Programming Language
Чуваки из RealPython всё-таки добили меня рекламой своей новой книги. Так и быть, беру! Правда, учитывая мою очередь из книг и скорость, с которой я их читаю, доберусь я до неё года через три.
Автор книги — Энтони Шоу — по совместительству ещё и мейнтейнер
Если вдруг вам тоже такое интересно, то вот здесь эта книга продаётся. Говорят, что сейчас там пока не полная цена.
Автор книги — Энтони Шоу — по совместительству ещё и мейнтейнер
pyjion
(Python с JIT-компилятором из .NET), так что он наверняка знает своё дело.Если вдруг вам тоже такое интересно, то вот здесь эта книга продаётся. Говорят, что сейчас там пока не полная цена.
Неделю назад появился черновик PEP 657, который предлагает в трейсбеках показывать не только номер строки, где возникла ошибка, но и смещение (то есть номера символов в строке). Таким образом вместо вот такой расплывчатой ошибки:
Так как для ветки 3.10 уже наступил фича-фриз, эту функциональность стоит ждать не раньше 3.11.
Traceback (most recent call last):Интерпретатор сможет указать на конкретное выражение в строке, вызвавшее ошибку:
File "test.py", line 19, in <module>
foo(a.name, b.name, c.name)
AttributeError: 'NoneType' object has no attribute 'name'
Traceback (most recent call last):
File "test.py", line 17, in <module>
foo(a.name, b.name, c.name)
^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
В документе есть и другие примеры. Выглядит приятно! 👍Так как для ветки 3.10 уже наступил фича-фриз, эту функциональность стоит ждать не раньше 3.11.
Python Enhancement Proposals (PEPs)
PEP 657 – Include Fine Grained Error Locations in Tracebacks | peps.python.org
This PEP proposes adding a mapping from each bytecode instruction to the start and end column offsets of the line that generated them as well as the end line number. This data will be used to improve tracebacks displayed by the CPython interpreter in or...
Всегда казалось, что чуваки, которые сидят на тяжёлом ФП, затем творят какую-то тёмную магию. Вот, например, статья про создание библиотеки для декларативной валидации пользовательского ввода в полтора экрана кода. И ведь, блин, красиво получилось. Как так уметь?
https://blog.drewolson.org/declarative-validation
https://blog.drewolson.org/declarative-validation
Forwarded from Кисель из IT
Мне очень не нравится, как в стандартной библиотеке
pathlib
переопределили оператор деления:>>> from pathlib import Path
>>> exmpl = Path("/test")
>>> exmpl
PosixPath('/test')
>>> exmpl / "nested"
PosixPath('/test/nested')
С первого взгляда кажется, что это классная и логичная фича, но когда в твоей голове вполне сформировано, что "/" это деление, то такой код плавит голову...