Еще одна интересная статья из серии "как все устроено под капотом". В общем случае отдавать файлы с помощью питоновских фреймоврков идея не очень хорошая - это будет не очень производительно, гораздо лучше файлы раздавать с какого-нибудь S3-хранилища, использовать CDN или хотя-бы Nginx (или аналог). Тем не менее, иногда это нужно и оправданно.
И дальше идет интересное, оказывается
А вот aiohttp поступает умнее - он использует
В общем, если вы генерируете и отдаете в браузер файлы питоном и делаете это часто - посмотрите, как это реализовано в используемом вами фреймворке, возможно вы сможете сэкономить ресурсы. Оригинальная статья https://medium.com/@alsadi/secret-sauce-is-zero-copy-single-context-switching-b749bd614dca
И дальше идет интересное, оказывается
FastAPI
(а точнее Starlette
на которой он основан) читает файл чанками(кусочками) и отдает браузеру. И чтение файла по кусочку в цикле - очевидно не самая эффективная операция.А вот aiohttp поступает умнее - он использует
loop.sendfile
, который в свою очередь использует os.sendfile()
который использует доступную на Linux и MacOS функцию ядра sendfile()
, которая позволяет отправить файл в сокет максимально эффективно. И судя по тестам вариант с sendfile
в 7 раз быстрее.В общем, если вы генерируете и отдаете в браузер файлы питоном и делаете это часто - посмотрите, как это реализовано в используемом вами фреймворке, возможно вы сможете сэкономить ресурсы. Оригинальная статья https://medium.com/@alsadi/secret-sauce-is-zero-copy-single-context-switching-b749bd614dca
GitHub
starlette/starlette/responses.py at ea70fd57b286824350da88c6d484c32bdf31627a · encode/starlette
The little ASGI framework that shines. 🌟. Contribute to encode/starlette development by creating an account on GitHub.
🔥28👍11
Вышел MyPy 1.0.0, из интересных изменений:
- На 40% быстрее, я очень рад, потому что на более-менее большой кодовой базе он раньше тормозил как не в себя
- Добавили сообщения о undefined variables, использовании переменной до ее объявления. Кажется, тот же flake8 нормально это отлавливает, но все равно выглядит небесполезно
- Добавили поддержку типа Self (есть в 3.11, для более ранних версий надо использовать typing_extensions)
- Реализовали поддержку ParamSpec, но я если честно еще ни разу ParamSpec не использовал в реальном коде, но если интересно, это PEP 612
И еще из интересного, они на конец перешли на semver и теперь будет проще по номерам версий понимать, будут ли подводные камни при обновлении 🙂
Подробнее вот тут https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html
- На 40% быстрее, я очень рад, потому что на более-менее большой кодовой базе он раньше тормозил как не в себя
- Добавили сообщения о undefined variables, использовании переменной до ее объявления. Кажется, тот же flake8 нормально это отлавливает, но все равно выглядит небесполезно
- Добавили поддержку типа Self (есть в 3.11, для более ранних версий надо использовать typing_extensions)
- Реализовали поддержку ParamSpec, но я если честно еще ни разу ParamSpec не использовал в реальном коде, но если интересно, это PEP 612
И еще из интересного, они на конец перешли на semver и теперь будет проще по номерам версий понимать, будут ли подводные камни при обновлении 🙂
Подробнее вот тут https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html
Python Enhancement Proposals (PEPs)
PEP 612 – Parameter Specification Variables | peps.python.org
There currently are two ways to specify the type of a callable, the Callable[[int, str], bool] syntax defined in PEP 484, and callback protocols from PEP 544. Neither of these support forwarding the parameter types of one callable over to another calla...
👍18🔥5
10 февраля в 14:00 МСК на очередном эфире будем обсуждать: Что нового в Python 3.12 с Никитой Соболевым, CTO wemake.services.
Обсудим:
• обновленную реализацию виртуальной машины;
• новые typing PEPs;
• Unstable C-API tier;
• начало большой чистки stdlib;
• C-API Watchers.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.
Обсудим:
• обновленную реализацию виртуальной машины;
• новые typing PEPs;
• Unstable C-API tier;
• начало большой чистки stdlib;
• C-API Watchers.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.
YouTube
Новинки в Python 3.12 / Опять переписали виртуальную машину / Большая чистка stdlib
В гостях у Moscow Python Podcast Никита Соболев, CTO wemake.services. Обсудили обновления в Python 3.12.
00:00 - интро
1:18 - «в Python уже все есть, но все время хочется что-то сделать»
3:35 - переписали виртуальную машину на DSL
10:20 - Гриша делится…
00:00 - интро
1:18 - «в Python уже все есть, но все время хочется что-то сделать»
3:35 - переписали виртуальную машину на DSL
10:20 - Гриша делится…
🔥16👍10
32 года назад, 20 февраля 1991 года Гвидо запостил в мейллист alt.sources исходники питона 0.9.1 - это считается первым релизом языка:
Если интересно, можно посмотреть ветку сообщений с исходниками тут (да, исходники просто текстом в 21 письме) - https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html
This is Python, an extensible interpreted programming language that combines remarkable power with very clear syntax.
Если интересно, можно посмотреть ветку сообщений с исходниками тут (да, исходники просто текстом в 21 письме) - https://www.tuhs.org/Usenet/alt.sources/1991-February/001749.html
🔥30👍6
Завтра, 23 февраля в 14:00 будет очередной прямой эфир Moscow Python Podcast. Будем обсуждать Copilot - какая от него польза и вред, лайфхаки по использованию и какие есть аналоги.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть https://www.youtube.com/live/lKnMBGqguRo?feature=share
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть https://www.youtube.com/live/lKnMBGqguRo?feature=share
YouTube
Copilot для Python-разработчика. Почему AI не изменил разработку?
В гостях у Moscow Python Podcast Арсений Сапелкин, тимлид, KasperskyOS и Никита Соболев, CTO wemake.services. Обсудим лайфхаки по использованию Copilot, почему вся разработка еще не автоматизирована, пользу инструмента для разработчиков и опасности Copilot…
👍10🔥2
Phylum обнаружили, что в pypi залита большая пачка (1 138 штук!) пакетов с малварью внутри. Выглядит так, что атака направлена на windows-машины, но это не тайпсквотинг (когда название пакета с малварью похоже на название популярного пакета). Сами пакеты с pypi выпилили очень оперативно. Вот тут можно почитать подробности - https://blog.phylum.io/phylum-discovers-another-attack-on-pypi
Это уже третий раз в этом месяце, когда на pypi выкладывают пакеты "с подвохом", поэтому на всякий случай напомню правила:
1. Прежде чем ставить пакет, зайдите на его страницу на pypi и убедитесь, что вы ставите именно тот пакет, который планируете. Сравните название с названием в официальном репозитории/документации — это поможет не попасть на "тайпсквоттинг"-пакеты
2. Пиньте зависимости — это может уберечь в ситуации, если злоумышленник каким-то образом сможет пропихнуть опасный код в релиз используемого вами пакета
3. Лично я предпочитаю пинить хеши пакетов, в этом случае если кто-то сумеет подменить пакет, то образ в ci просто не соберётся и я об этом узнаю
Ссылки на предыдущие атаки на pypi: раз и два
Это уже третий раз в этом месяце, когда на pypi выкладывают пакеты "с подвохом", поэтому на всякий случай напомню правила:
1. Прежде чем ставить пакет, зайдите на его страницу на pypi и убедитесь, что вы ставите именно тот пакет, который планируете. Сравните название с названием в официальном репозитории/документации — это поможет не попасть на "тайпсквоттинг"-пакеты
2. Пиньте зависимости — это может уберечь в ситуации, если злоумышленник каким-то образом сможет пропихнуть опасный код в релиз используемого вами пакета
3. Лично я предпочитаю пинить хеши пакетов, в этом случае если кто-то сумеет подменить пакет, то образ в ci просто не соберётся и я об этом узнаю
Ссылки на предыдущие атаки на pypi: раз и два
Phylum Research | Software Supply Chain Security
Phylum Discovers Aggressive Attack on PyPI Attempting to Deliver Rust Executable
Phylum discovers ~6,000 malicious packages published to PyPI shipping Rust stage 1 executables in ongoing malware campaign.
👍22
Вышел большой отчет про то, как python используется в блокчейн-разработке. И выглядит так, что таки используется. Из интересного, оказывается есть целая конференция PyChain и доклады выложены на ютубе - может быть интересно тем, кто интересуется темой.
В остальном, отчет просто перечисляет популярные библиотеки/тулы/sdk на питоне, связанные с блокчейном. Предсказывают, что в этом году разработка начнет больше уходить от доминирования Etherium/bitcoin и python-а в блокчейн-разработке станет больше Я от этой тематики далек, но посмотреть было интересно.
Ссылка на отчет https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023
В остальном, отчет просто перечисляет популярные библиотеки/тулы/sdk на питоне, связанные с блокчейном. Предсказывают, что в этом году разработка начнет больше уходить от доминирования Etherium/bitcoin и python-а в блокчейн-разработке станет больше Я от этой тематики далек, но посмотреть было интересно.
Ссылка на отчет https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023
Trading Strategy
The state of Python in blockchain - 2023 report
An overview of Python programming language technologies in blockchain software development ecosystems in 2023.
🔥10👍4
Хороший пост про проблему, про которую довольно легко забыть. Если делать просто
В документации это поведение отражено только с 3.9, хотя сама функция появилась в 3.7. Сейчас даже в примере хорошо показали "как правильно", тем не менее думаю многие и не помнят про такое поведение (я вот не помнил). Вот тут расписано подробнее https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/
asyncio.create_task()
не сохраняя ссылку на результат в переменную, то сборщик мусора может прибить задачу до того, как она будет исполнена и получится очень сложно отлавливаемый баг.В документации это поведение отражено только с 3.9, хотя сама функция появилась в 3.7. Сейчас даже в примере хорошо показали "как правильно", тем не менее думаю многие и не помнят про такое поведение (я вот не помнил). Вот тут расписано подробнее https://textual.textualize.io/blog/2023/02/11/the-heisenbug-lurking-in-your-async-code/
Textual Documentation
Textual - The Heisenbug lurking in your async code
Textual is a TUI framework for Python, inspired by modern web development.
👍18🔥8
Привет, приближается первая пятница месяца, а значит 3 марта в 14:00 по Москве мы снова соберемся онлайн, чтобы обсудить новости python за февраль. В этом выпуске:
• 32 года Python;
• три больших атаки на pypi за месяц, и что с этим собираются делать?;
• три главных тренда 2023 в Python;
• вышел отчет по Python в блокчейне, оказывается python там тоже используют;
• вышел mypy 1.0;
и другие новости.
В ходе трансляции Moscow Python Podcast будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке https://www.youtube.com/watch?v=36APuXAnSoo
• 32 года Python;
• три больших атаки на pypi за месяц, и что с этим собираются делать?;
• три главных тренда 2023 в Python;
• вышел отчет по Python в блокчейне, оказывается python там тоже используют;
• вышел mypy 1.0;
и другие новости.
В ходе трансляции Moscow Python Podcast будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке https://www.youtube.com/watch?v=36APuXAnSoo
YouTube
Python-тренды в 2023 году, атаки на PyPI и релиз Mypy 1.0
00:00 - интро
1:32 - про день рождения Python и самые интересные вехи в языке за 32 года
13:00 - Phylum отловили три атаки на PyPI
15:05 - ответ на вопрос про перспективы FastAPI и Django
22:00 - про безопасность разработки
27:00 - ответ на вопрос про…
1:32 - про день рождения Python и самые интересные вехи в языке за 32 года
13:00 - Phylum отловили три атаки на PyPI
15:05 - ответ на вопрос про перспективы FastAPI и Django
22:00 - про безопасность разработки
27:00 - ответ на вопрос про…
🔥10👍4
Короткая статья с примером того, как с помощью nox и pyenv гонять тесты на разных версиях питона. Полезно, если вы пишете, к примеру, библиотеку.
Последнее время часто вижу, что люди переходят с
https://sethmlarson.dev/nox-pyenv-all-python-versions
Последнее время часто вижу, что люди переходят с
tox
на nox
, в основном потому что его удобнее конфигурировать.https://sethmlarson.dev/nox-pyenv-all-python-versions
GitHub
GitHub - pyenv/pyenv: Simple Python version management
Simple Python version management. Contribute to pyenv/pyenv development by creating an account on GitHub.
👍11🔥1
Наткнулся на редите на пост об игре Software Engineering Simulator. Идея проста - пишем код на питоне, чтобы управлять различными механизмами и проходить уровни. Графика, прямо скажем, не некстген, но выглядит любопытно, пока у подобные игрушки/тренажеры я только с мультяшной графикой видел. Добавил себе в вишлист - посмотрю на релизе и возможно куплю ребенку, надеюсь его больше чем Codecombat заинтересует https://store.steampowered.com/app/2216770/JOY_OF_PROGRAMMING__Software_Engineering_Simulator/
Steampowered
JOY OF PROGRAMMING - Software Engineering Simulator on Steam
Use real Python code to automate machines, robots, drones and more: Program self-driving vehicles; crack passwords; apply machine learning; automate logistics; use image processing to guide missiles. Gain real coding skills and solve exciting bite-sized programming…
👍10🔥4
На reddit-е кто-то задал вопрос "Стоит ли использовать FastApi, учитывая что у проекта 400+ открытых issues на гитхабе?" и па-не-слась :)
На самом деле тред интересный, там много внятных обсуждений, кроме того в комменты пришел tiangolo (автор fastapi) и мне было интересно почитать его позицию.
Если делать выжимку то получается следующее:
- tiangolo в курсе проблем с делегированием и пробует их решить, говорит что в этом году тикеты начали ревьюится быстрее
- он жалуется на то, что он неоднократно встречал баги в pr-ах которые ревьюил не он
- тем не менее, проект завязан на одного человека и это риск который надо учитывать
Ссылка на тред https://www.reddit.com/r/Python/comments/11pfgjo/is_something_wrong_with_fastapi/
На самом деле тред интересный, там много внятных обсуждений, кроме того в комменты пришел tiangolo (автор fastapi) и мне было интересно почитать его позицию.
Если делать выжимку то получается следующее:
- tiangolo в курсе проблем с делегированием и пробует их решить, говорит что в этом году тикеты начали ревьюится быстрее
- он жалуется на то, что он неоднократно встречал баги в pr-ах которые ревьюил не он
- тем не менее, проект завязан на одного человека и это риск который надо учитывать
Ссылка на тред https://www.reddit.com/r/Python/comments/11pfgjo/is_something_wrong_with_fastapi/
Reddit
From the Python community on Reddit
Explore this post and more from the Python community
👍19
Новость не про python, но мне кажется интересной поэтому страдайте:
Вчера вечером OpenAI анонсировали GPT4 - следующую версию сетки, которая используется например в ChatGPT. Основные моменты:
- GPT4 будет доступна на chat.openai.com только коммерческим подписчикам с ограничением по объему использования. OpenAi пока не определились с размером ограничений
- Доступ к api тоже за деньги и нужно записываться в очередь, бесплатный доступ "когда-нибудь"
- Сетка, как и GPT3, не знает ничего позже 2021 года и не умеет учиться на том, что ей пишут
- Обещают, что будет сильно меньше, чем GPT3 галлюцинировать и придумывать факты
- Добавили возможность давать управляющие команды используя роль system — это позволит менять поведение сети перед тем, как начать диалог. С моей точки зрения самая интересная фича, работа с промптами выходит на новый уровень
Вообще в статье очень интересные примеры работы с сеткой, рекомендую хотя бы полистать. Ссылка на статью https://openai.com/research/gpt-4
Вчера вечером OpenAI анонсировали GPT4 - следующую версию сетки, которая используется например в ChatGPT. Основные моменты:
- GPT4 будет доступна на chat.openai.com только коммерческим подписчикам с ограничением по объему использования. OpenAi пока не определились с размером ограничений
- Доступ к api тоже за деньги и нужно записываться в очередь, бесплатный доступ "когда-нибудь"
- Сетка, как и GPT3, не знает ничего позже 2021 года и не умеет учиться на том, что ей пишут
- Обещают, что будет сильно меньше, чем GPT3 галлюцинировать и придумывать факты
- Добавили возможность давать управляющие команды используя роль system — это позволит менять поведение сети перед тем, как начать диалог. С моей точки зрения самая интересная фича, работа с промптами выходит на новый уровень
Вообще в статье очень интересные примеры работы с сеткой, рекомендую хотя бы полистать. Ссылка на статью https://openai.com/research/gpt-4
Openai
GPT-4
We’ve created GPT-4, the latest milestone in OpenAI’s effort in scaling up deep learning. GPT-4 is a large multimodal model (accepting image and text inputs, emitting text outputs) that, while less capable than humans in many real-world scenarios, exhibits…
🔥6👍3
17 марта в 14:00 встретимся в прямом эфире Moscow Python Podcast с Алексеем Андрияшем, тимлидом, YADRO. Вместе с гостем обсудим:
• разработку тулов для разработчиков;
• использование CI/CD;
• как доносить проблемы до девопсов;
• почему Jenkins все еще жив.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.
• разработку тулов для разработчиков;
• использование CI/CD;
• как доносить проблемы до девопсов;
• почему Jenkins все еще жив.
В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Присоединяйтесь к нам по ссылке и ставьте колокольчик, чтобы не забыть.
YouTube
Сложности CI/CD / Девопсы как ЖКХ / Почему Jenkins все еще жив
00:00 - интро
00:50 - чем занимается команда тулов в YADRO
6:30 - о Jenkins и причем здесь «большой драчевый напильник»
16:00 - с чего начинать работу с CI/CD и нужно ли разбираться в Jenkins
20:58 - нужно ли изучать Jenkins про запас или просто знать о…
00:50 - чем занимается команда тулов в YADRO
6:30 - о Jenkins и причем здесь «большой драчевый напильник»
16:00 - с чего начинать работу с CI/CD и нужно ли разбираться в Jenkins
20:58 - нужно ли изучать Jenkins про запас или просто знать о…
👍3🔥2
Вышел PyTorch 2.0. Признаюсь честно, я его трогал совсем немного и это было довольно давно. Поэтому почитав список изменений я понял, что не понимаю, что крутого в релизе :-). Тем не менее, поздравляю всех кто ее использует с большим мажорным апдейтом. https://pytorch.org/blog/pytorch-2.0-release/
👍7
Последние несколько месяцев регулярно выходят новости в стиле "на pypi залили еще 100500 пакетов с названиями, похожими на популярные библиотеки и злодейским кодом внутри". Эта схема как-то работает потому, что особенно новички часто слышат где-то название библиотеки и ставят ее, не посмотрев внимательно, что это за код.
На realpython.com вышла статья, которая рассказывает том, как оценить качество либы перед тем, как начать ее использовать. В принципе ничего сложного, но как много людей, к примеру, обращают внимание на то, под какой лицензией выпущена библиотека?
Итак коротко, что они советуют:
- Посмотреть внимательно страницу пакета на pypi, кто автор, сколько было релизов, когда был последний релиз, какой Development Status - если там planning или alfa - точно ли вы хотите тащить к себе подобный код?
- Посмотреть страницу пакета на Libraries.io, это даст чуть больше информации чем pypi
- Заглянуть в репозиторий на github/gitlab и оценить активность разработки, количество issues, качество readme и т.д.
- Посмотреть, что за лицензия у либы. Это не очень важно для маленьких проектов, но если вы пишете коммерческий софт, проблемная лицензия может потребовать срочно менять библиотеку если к вам придет, например, аудит при получении инвестиций или заключении крупного договора. Поверьте, выпиливать либу проросшую корнями в код может быть очень, хм, интересным опытом.
В общем думайте, что вы скачиваете из интернетов (с) https://realpython.com/python-package-quality/
На realpython.com вышла статья, которая рассказывает том, как оценить качество либы перед тем, как начать ее использовать. В принципе ничего сложного, но как много людей, к примеру, обращают внимание на то, под какой лицензией выпущена библиотека?
Итак коротко, что они советуют:
- Посмотреть внимательно страницу пакета на pypi, кто автор, сколько было релизов, когда был последний релиз, какой Development Status - если там planning или alfa - точно ли вы хотите тащить к себе подобный код?
- Посмотреть страницу пакета на Libraries.io, это даст чуть больше информации чем pypi
- Заглянуть в репозиторий на github/gitlab и оценить активность разработки, количество issues, качество readme и т.д.
- Посмотреть, что за лицензия у либы. Это не очень важно для маленьких проектов, но если вы пишете коммерческий софт, проблемная лицензия может потребовать срочно менять библиотеку если к вам придет, например, аудит при получении инвестиций или заключении крупного договора. Поверьте, выпиливать либу проросшую корнями в код может быть очень, хм, интересным опытом.
В общем думайте, что вы скачиваете из интернетов (с) https://realpython.com/python-package-quality/
Realpython
How to Evaluate the Quality of Python Packages – Real Python
Just like you shouldn't download any file from the Internet, you shouldn't install third-party Python packages without evaluating them first. This tutorial will give you the tool set to evaluate the quality of external Python packages before you incorporate…
👍14🔥6
Python meetup (Online)
1. Real-time аналитика в Uchi.ru - как смотреть сложные метрики здесь и сейчас - Андрей Скиба, Uchi.ru
В докладе рассказывается об архитектуре системы real-time аналитики, разработанной в Uchi.ru, а также о примененных в ней подходах и технологиях.
2. FastAPI с нуля до production-ready образа - Алексей Шарыпов, VK
Поделюсь опытом, как запустить FastAPI приложение в продакшне. На простых примерах покажу как собрать контейнер с использованием Poetry.
3. Введение в функциональное программирование на Python - Алексей Каньков, Revizto
Основы функционального программирования и его применению в Python для разработчиков среднего и продвинутого уровня, которые хотят расширить свои знания в этой области.
➖➖➖
🗓 29 марта, начало в 19:00 мск, Среда
🌐 ОНЛАЙН
✅ Регистрация на мероприятие
1. Real-time аналитика в Uchi.ru - как смотреть сложные метрики здесь и сейчас - Андрей Скиба, Uchi.ru
В докладе рассказывается об архитектуре системы real-time аналитики, разработанной в Uchi.ru, а также о примененных в ней подходах и технологиях.
2. FastAPI с нуля до production-ready образа - Алексей Шарыпов, VK
Поделюсь опытом, как запустить FastAPI приложение в продакшне. На простых примерах покажу как собрать контейнер с использованием Poetry.
3. Введение в функциональное программирование на Python - Алексей Каньков, Revizto
Основы функционального программирования и его применению в Python для разработчиков среднего и продвинутого уровня, которые хотят расширить свои знания в этой области.
➖➖➖
🗓 29 марта, начало в 19:00 мск, Среда
🌐 ОНЛАЙН
✅ Регистрация на мероприятие
🔥12👍4
Вышло свежее исследование Django-экосистемы от JetBrains. Из интересного:
- за 2022 многие переехали с о старых и неподдерживаемых версий на 3.2/4.1
- забавный пассаж про "3.1 и ниже используют в основном опытные разработчики, а новички выбирают послденюю версию". Подозреваю, что на самом длеле это история о том, что когда ты работаешь с большой легаси кодовой базой обновляться - это каждый раз квест
- htmx набирает популярность и похоже отжимает пользователей у React (1 место) и jQuery (2 место)
- 46% разработчиков прописывают аннотации типов
- black/isrt/pre-commit неплохо прибавили в популярности
Ссылка https://lp.jetbrains.com/django-developer-survey-2022/
- за 2022 многие переехали с о старых и неподдерживаемых версий на 3.2/4.1
- забавный пассаж про "3.1 и ниже используют в основном опытные разработчики, а новички выбирают послденюю версию". Подозреваю, что на самом длеле это история о том, что когда ты работаешь с большой легаси кодовой базой обновляться - это каждый раз квест
- htmx набирает популярность и похоже отжимает пользователей у React (1 место) и jQuery (2 место)
- 46% разработчиков прописывают аннотации типов
- black/isrt/pre-commit неплохо прибавили в популярности
Ссылка https://lp.jetbrains.com/django-developer-survey-2022/
JetBrains: Developer Tools for Professionals and Teams
Django Developers Survey 2022 Results
Official Django Developers Survey 2022 Results by Django Software Foundation and JetBrains: 4,900 responses.
👍18
Сегодня будет очередной Moscow Python Meetup, к созданию которых я когда-то приложил руки. Даже если вы не в Москве, можно посмотреть трансляцию https://www.youtube.com/watch?v=v3buzDmoHxA
В программе:
* Лучший язык — это… или Пайтон против Суслика (Евгений Соколов, YADRO)
* Кто такой syslog, зачем читать RFC-* и причём тут Django (Максим Безруков, Ред Софт)
* и секретный доклад от Николая Маркова в Aligned Research Group
В программе:
* Лучший язык — это… или Пайтон против Суслика (Евгений Соколов, YADRO)
* Кто такой syslog, зачем читать RFC-* и причём тут Django (Максим Безруков, Ред Софт)
* и секретный доклад от Николая Маркова в Aligned Research Group
YouTube
Moscow Python Meetup x YADRO: о Go для питонистов, применении syslog и не только
Сообщество Moscow Python проводит свой 81-й митап при поддержке компании YADRO. Нас ждут 3 доклада. Зрители трансляции могут писать вопросы спикерам в ютуб-чате.
В программе:
* Лучший язык — это… или Пайтон против Суслика (Евгений Соколов, YADRO)
* Кто…
В программе:
* Лучший язык — это… или Пайтон против Суслика (Евгений Соколов, YADRO)
* Кто…
🔥12👍2
List comprehensions (выражения типа [x for x in iterable]) в питоне обычно сложновато даются новичкам. Но стоит один раз разобраться с синтаксисом, как понимаешь, насколько это удобный инструмент. Более того, они быстрее чем .append() в список в цикле.
И вот в новом PEP 709 предлагают оптимизировать их работу. Сейчас при переводе list/dict/set comprehension в байткод происходит создание вложенной функции и ее исполнение. Авторы PEP предлагают не создавать эту дополнительную вложенную функцию, а сразу писать в байткоде ее содержимое (inline). Это должно быть безопасно, так как в случае list comprehention мы не можем стандартными средствами в процессе его выполнения как-то повлиять на переменные внутри.
У этого подхода есть большой плюс - ускорение исполнения подобных выражений на 11% на тестах. Из минусов - в трейсбеках больше не будет пункта listcomp и при трейсинге/профилировании не будет видны вход в comprehension и выход из него. На мой взгляд плюсы заметно перевешивают минусы, надеюсь этот PEP примут и внедрят в одном из ближайших релизов.
Ссылка https://peps.python.org/pep-0709/
И вот в новом PEP 709 предлагают оптимизировать их работу. Сейчас при переводе list/dict/set comprehension в байткод происходит создание вложенной функции и ее исполнение. Авторы PEP предлагают не создавать эту дополнительную вложенную функцию, а сразу писать в байткоде ее содержимое (inline). Это должно быть безопасно, так как в случае list comprehention мы не можем стандартными средствами в процессе его выполнения как-то повлиять на переменные внутри.
У этого подхода есть большой плюс - ускорение исполнения подобных выражений на 11% на тестах. Из минусов - в трейсбеках больше не будет пункта listcomp и при трейсинге/профилировании не будет видны вход в comprehension и выход из него. На мой взгляд плюсы заметно перевешивают минусы, надеюсь этот PEP примут и внедрят в одном из ближайших релизов.
Ссылка https://peps.python.org/pep-0709/
Python Enhancement Proposals (PEPs)
PEP 709 – Inlined comprehensions | peps.python.org
Comprehensions are currently compiled as nested functions, which provides isolation of the comprehension’s iteration variable, but is inefficient at runtime. This PEP proposes to inline list, dictionary, and set comprehensions into the code where they a...
👍28