Zen of Python
18.9K subscribers
1.39K photos
202 videos
38 files
3.56K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Как выбрать между threading, asyncio и процессами, не переписывая код четыре раза

Модель конкурентности обычно берут ту, что уже стоит в соседнем модуле, а не ту, что подходит нагрузке. Пока задача упирается в сеть, ошибиться сложно: ждёт всё равно не процессор. На счётной задаче цена решения видна сразу.

В руководстве Real Python одна и та же задача написана в четырёх версиях: синхронной, на потоках, на asyncio и на процессах. И так дважды: сначала для нагрузки, где программа ждёт ответа по сети, потом для той, где она считает. Восемь реализаций одной задачи.

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

#python
3
Питонисту советуют TypeScript ради типов, которые у него уже есть

У питониста в CI давно стоит mypy, а аргументы за TypeScript ему перечисляют те же: типы ловят ошибки до запуска, интерфейсы фиксируют форму объекта, вывод типов экономит аннотации. Из этого набора собран и гайд для питонистов на dev.to.

Разница начинается дальше, в судьбе самих типов. В TypeScript они стираются при компиляции, и входящий JSON всё равно приходится проверять руками или через zod. В Python аннотации остаются в объекте: их читает pydantic, на них держится валидация в FastAPI, один и тот же тип работает и в проверке схемы, и в разборе запроса.

Одни считают, что после mypy в TypeScript идти незачем: тот же контракт, только с npm. Другие говорят, что tsc дисциплинирует сильнее mypy, который на чужом коде молча сдаётся на Any.

А по вашему опыту?

#python