Python разбирает JSON на 66 ГБ/с: GIL больше не мешает
Свежий бенчмарк: 7,6 ГБ JSON обрабатываются в одном процессе Python примерно за 0,12 секунды. Это около 66 ГБ/с. Ещё пару лет назад такую цифру рядом со словом Python приняли бы за опечатку.
https://uproger.com/python-json-66-gbs-fastsimdjson/
Свежий бенчмарк: 7,6 ГБ JSON обрабатываются в одном процессе Python примерно за 0,12 секунды. Это около 66 ГБ/с. Ещё пару лет назад такую цифру рядом со словом Python приняли бы за опечатку.
https://uproger.com/python-json-66-gbs-fastsimdjson/
👍10❤2
Media is too big
VIEW IN TELEGRAM
Python subprocess не умирает после отмены запроса: как остановить его правильно
Обрыв стрима не завершает подпроцесс: Python продолжает грузить CPU, хотя клиент давно ушёл. Запускайте процесс в отдельной группе (start_new_session=True) и отправляйте os.killpg(SIGTERM) всей группе, а если процесс завис, добивайте SIGKILL и вызывайте await proc.wait().
https://www.youtube.com/shorts/no9DlVbBGdY
Обрыв стрима не завершает подпроцесс: Python продолжает грузить CPU, хотя клиент давно ушёл. Запускайте процесс в отдельной группе (start_new_session=True) и отправляйте os.killpg(SIGTERM) всей группе, а если процесс завис, добивайте SIGKILL и вызывайте await proc.wait().
https://www.youtube.com/shorts/no9DlVbBGdY
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: https://t.me/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_1001_notes
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: https://t.me/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: https://t.me/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_1001_notes
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: https://t.me/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
❤2👍1👎1🥰1
🐍 Пишешь на Python годами, а потом узнаёшь, что так было можно
На Reddit разработчики собрали возможности, которые долго проходили мимо них. Выбрали пять полезных.
1. Проверять несколько расширений одним вызовом
2. Получать группы регулярки через скобки
Да, вместо
3. Считать частоты и сразу получать топ
4. Убирать префикс без ручных срезов
Удаляется именно указанный префикс. Если его нет, строка остаётся прежней.
5. Объединять вложенные списки через итератор
Полезная замена
Какую возможность Python ты обнаружил неприлично поздно?
https://www.reddit.com/r/Python/comments/1x3vy20/what_are_some_features_in_python_that_you/
На Reddit разработчики собрали возможности, которые долго проходили мимо них. Выбрали пять полезных.
1. Проверять несколько расширений одним вызовом
"photo.webp".endswith((".png", ".jpg", ".webp"))
# True
startswith() тоже принимает кортеж вариантов.2. Получать группы регулярки через скобки
import re
m = re.search(r"(?P<year>\d{4})", "Python 2026")
if m:
print(m["year"]) # 2026
Да, вместо
m.group("year") можно написать m["year"].3. Считать частоты и сразу получать топ
from collections import Counter
Counter("banana").most_common(2)
# [('a', 3), ('n', 2)]
4. Убирать префикс без ручных срезов
"Bearer TOKEN".removeprefix("Bearer ")
# 'TOKEN'
Удаляется именно указанный префикс. Если его нет, строка остаётся прежней.
5. Объединять вложенные списки через итератор
from itertools import chain
list(chain.from_iterable([[1, 2], [3], [4, 5]]))
# [1, 2, 3, 4, 5]
Полезная замена
sum(lists, []), который многократно копирует элементы и на больших данных может сильно тормозить.Какую возможность Python ты обнаружил неприлично поздно?
https://www.reddit.com/r/Python/comments/1x3vy20/what_are_some_features_in_python_that_you/
🔥4❤2🥰1
25 лучших бесплатных ресурсов для изучения ИИ в 2026 году
Курсы Стэнфорда и MIT, книги, YouTube-каналы и открытые репозитории для изучения ИИ с нуля до LLM и агентов. Подборка по этапам и готовый маршрут обучения.
https://uproger.com/25-resursov-dlya-izucheniya-ii-2026/
Курсы Стэнфорда и MIT, книги, YouTube-каналы и открытые репозитории для изучения ИИ с нуля до LLM и агентов. Подборка по этапам и готовый маршрут обучения.
https://uproger.com/25-resursov-dlya-izucheniya-ii-2026/
❤3👍2
В Python 3.15 одна звёздочка заменяет вложенный цикл
Раньше для объединения списков писали:
Теперь достаточно:
Двойная звёздочка объединяет словари:
При совпадении ключей побеждает последнее значение — удобно собирать настройки из нескольких источников.
Распаковка убирает один уровень вложенности. В Python 3.14 такой синтаксис внутри comprehensions вызовет
https://peps.python.org/pep-0798/
Раньше для объединения списков писали:
rows = [[1, 2], [3], [4, 5]]
flat = [x for row in rows for x in row]
Теперь достаточно:
flat = [*row for row in rows]
# [1, 2, 3, 4, 5]
Двойная звёздочка объединяет словари:
configs = [
{"debug": False, "timeout": 10},
{"timeout": 30},
]
config = {**part for part in configs}
# {'debug': False, 'timeout': 30}
При совпадении ключей побеждает последнее значение — удобно собирать настройки из нескольких источников.
Распаковка убирает один уровень вложенности. В Python 3.14 такой синтаксис внутри comprehensions вызовет
SyntaxError.https://peps.python.org/pep-0798/
❤13👍5🔥2
LLM в 200 раз быстрее: скоринг вместо генерации
Как превратить открытую LLM в быстрый локальный движок решений через скоринг следующего токена в SGLang: код, тесты на Qwen и сравнение с генерацией.
Многие вызовы LLM в продакшене вообще не требуют нового текста. Приложение заранее знает все допустимые ответы, и модели остается только выбрать один из них. Классический пример: тикет в поддержку «С меня дважды списали деньги за одну и ту же подписку», который нужно отправить в биллинг, техподдержку или отдел доступа к аккаунтам.
https://uproger.com/lokalnaya-llm-jev-skoring-sglang/
Как превратить открытую LLM в быстрый локальный движок решений через скоринг следующего токена в SGLang: код, тесты на Qwen и сравнение с генерацией.
Многие вызовы LLM в продакшене вообще не требуют нового текста. Приложение заранее знает все допустимые ответы, и модели остается только выбрать один из них. Классический пример: тикет в поддержку «С меня дважды списали деньги за одну и ту же подписку», который нужно отправить в биллинг, техподдержку или отдел доступа к аккаунтам.
https://uproger.com/lokalnaya-llm-jev-skoring-sglang/
❤4👍2🔥1
Как выучить Python с нуля в 2026 году: пошаговый план для начинающих
Пошаговый план изучения Python с нуля: установка, синтаксис, первые проекты, ошибки новичков и ответы на частые вопросы. С примерами кода.
Python — один из самых популярных языков программирования в мире.
В этой статье - пошаговый план, как выучить Python с нуля: от установки до первых проектов, с примерами кода, типичными ошибками новичков и ответами на частые вопросы.
https://uproger.com/kak-vyuchit-python-s-nulya/
Пошаговый план изучения Python с нуля: установка, синтаксис, первые проекты, ошибки новичков и ответы на частые вопросы. С примерами кода.
Python — один из самых популярных языков программирования в мире.
В этой статье - пошаговый план, как выучить Python с нуля: от установки до первых проектов, с примерами кода, типичными ошибками новичков и ответами на частые вопросы.
https://uproger.com/kak-vyuchit-python-s-nulya/
👍3❤2🔥1
LRU-кэш на Python: разбор задачи с собеседования (O(1), OrderedDict, TTL)
Разбираем LRU-кэш на Python за O(1): двусвязный список и хеш-таблица, решение через OrderedDict, TTL и потокобезопасность. Код, тесты и типичные ошибки.
LRU-кэш (Least Recently Used) - одна из самых популярных задач на собеседованиях Python-разработчиков уровня middle и senior. Она короткая, но сразу показывает, понимает ли кандидат сложность алгоритмов, умеет ли комбинировать структуры данных и пишет ли чистый код. В этой статье разберём задачу по шагам: от наивного решения к оптимальному за O(1), затем к Pythonic-версии через OrderedDict и к усложнениям, которые любят давать интервьюеры.
https://uproger.com/lru-cache-python-sobesedovanie/
Разбираем LRU-кэш на Python за O(1): двусвязный список и хеш-таблица, решение через OrderedDict, TTL и потокобезопасность. Код, тесты и типичные ошибки.
LRU-кэш (Least Recently Used) - одна из самых популярных задач на собеседованиях Python-разработчиков уровня middle и senior. Она короткая, но сразу показывает, понимает ли кандидат сложность алгоритмов, умеет ли комбинировать структуры данных и пишет ли чистый код. В этой статье разберём задачу по шагам: от наивного решения к оптимальному за O(1), затем к Pythonic-версии через OrderedDict и к усложнениям, которые любят давать интервьюеры.
https://uproger.com/lru-cache-python-sobesedovanie/
❤2👍2🔥1
Django 6.1: загрузка связанных данных по требованию, каскадное удаление силами БД и новая настройка почты.
Релиз вышел 5 августа. Три основных изменения:
1. Новые режимы загрузки полей
В этом примере Django выполняет два запроса: за книгами и за их авторами.
Режим `FETCH_RAISE` вместо неявного запроса выбрасывает исключение – полезно для обнаружения неожиданных обращений к БД.
2. Удаление на уровне базы
Для
Нюанс: `DB_CASCADE` не вызывает сигналы `pre_delete` и `post_delete`.
3. Несколько почтовых бэкендов
Настройка `MAILERS` позволяет описывать разные подключения словарём, а при отправке выбирать нужное через
Перед обновлением проверьте версии БД: нужны PostgreSQL 15+, MySQL 8.4+, MariaDB 10.11+ или SQLite 3.37+.
https://www.djangoproject.com/weblog/2026/aug/05/django-61-released/
Релиз вышел 5 августа. Три основных изменения:
1. Новые режимы загрузки полей
FETCH_PEERS при обращении к незагруженному полю получает данные сразу для объектов из того же QuerySet. Это помогает бороться с N+1:
from django.db import models
books = Book.objects.fetch_mode(models.FETCH_PEERS)
for book in books:
print(book.author.name)
В этом примере Django выполняет два запроса: за книгами и за их авторами.
Режим `FETCH_RAISE` вместо неявного запроса выбрасывает исключение – полезно для обнаружения неожиданных обращений к БД.
2. Удаление на уровне базы
Для
ForeignKey.on_delete появились `DB_CASCADE`, `DB_SET_NULL` и `DB_SET_DEFAULT`. Логику выполняет сама БД через SQL ON DELETE.Нюанс: `DB_CASCADE` не вызывает сигналы `pre_delete` и `post_delete`.
3. Несколько почтовых бэкендов
Настройка `MAILERS` позволяет описывать разные подключения словарём, а при отправке выбирать нужное через
using.Перед обновлением проверьте версии БД: нужны PostgreSQL 15+, MySQL 8.4+, MariaDB 10.11+ или SQLite 3.37+.
https://www.djangoproject.com/weblog/2026/aug/05/django-61-released/
Django Project
Django 6.1 released
Posted by Jacob Walls on Aug. 5, 2026
❤4👏2👍1
Одна библиотека для сериализации и проверки данных в Python
🔥 msgspec объединяет работу с JSON, MessagePack и валидацию типов.
Что внутри:
- Быстрая сериализация.
- Проверка данных по типам.
- Поддержка JSON и MessagePack.
- Типизированные структуры Python.
Установка: pip install msgspec
Стоит присмотреться, если в проекте много обмена структурированными данными и хочется совместить их обработку с проверкой.
https://github.com/msgspec/msgspec
🔥 msgspec объединяет работу с JSON, MessagePack и валидацию типов.
Что внутри:
- Быстрая сериализация.
- Проверка данных по типам.
- Поддержка JSON и MessagePack.
- Типизированные структуры Python.
Установка: pip install msgspec
Стоит присмотреться, если в проекте много обмена структурированными данными и хочется совместить их обработку с проверкой.
https://github.com/msgspec/msgspec
❤4🔥2👍1
📄️️️️️️ Agent Harness Course 2026 - как построить своего AI-агента с нуля
Пошаговый курс на ~8 недель (1–2 часа в день): от одного запроса к LLM до агента с инструментами, памятью, субагентами, защитой и тестами - и финального проекта.
Свой учебный харнес на чистом Python без единой зависимости, 7 запускаемых уроков, финальный проект, 19 тестов и разбор архитектуры настоящего open-source агента. Ai Ml — материал переработан, структурирован и дополнен кодом, схемами и справочниками.
Курс не учит «пользоваться ещё одним фреймворком». Он показывает, из чего сделан любой агент — Claude Code, Codex, Cursor, Devin, LearnHarness — и даёт собрать каждую деталь руками. После этого любой фреймворк читается за вечер, а любой баг агента - объясним.
https://github.com/justxor/agent-harness-course/
Пошаговый курс на ~8 недель (1–2 часа в день): от одного запроса к LLM до агента с инструментами, памятью, субагентами, защитой и тестами - и финального проекта.
Свой учебный харнес на чистом Python без единой зависимости, 7 запускаемых уроков, финальный проект, 19 тестов и разбор архитектуры настоящего open-source агента. Ai Ml — материал переработан, структурирован и дополнен кодом, схемами и справочниками.
Курс не учит «пользоваться ещё одним фреймворком». Он показывает, из чего сделан любой агент — Claude Code, Codex, Cursor, Devin, LearnHarness — и даёт собрать каждую деталь руками. После этого любой фреймворк читается за вечер, а любой баг агента - объясним.
https://github.com/justxor/agent-harness-course/
❤6👍3🥰1
Зачем вам Hugo и Jekyll? На Python теперь можно собрать статический сайт в три строки
Разработчик nanodjango показал, как превратить Django в генератор статических сайтов без сложной конфигурации и десятков файлов.
Всё приложение:
Устанавливаем зависимости:
Теперь достаточно положить Markdown-файлы в папку
Что особенно интересно:
- Markdown и HTML с поддержкой frontmatter.
- Автоматическая перезагрузка страниц при редактировании.
- Генерация статического сайта одной командой.
- Поддержка Django ORM, моделей и админки.
- Возможность превратить проект в полноценное веб-приложение без переписывания с нуля.
Сборка HTML:
Самая необычная возможность: можно управлять контентом через Django Admin и базу данных, а на выходе получать обычные статические HTML-файлы без серверной логики.
Подойдёт для документации, блогов, лендингов и небольших сайтов.
https://nanodjango.dev/blog/2026-10-static-site-builder/
Разработчик nanodjango показал, как превратить Django в генератор статических сайтов без сложной конфигурации и десятков файлов.
Всё приложение:
from nanodjango import Django
app = Django()
app.pages("/", path="pages")
Устанавливаем зависимости:
pip install nanodjango django-nanopages django-distill
Теперь достаточно положить Markdown-файлы в папку
pages/. Они автоматически превращаются в страницы с поддержкой Django-шаблонов.Что особенно интересно:
- Markdown и HTML с поддержкой frontmatter.
- Автоматическая перезагрузка страниц при редактировании.
- Генерация статического сайта одной командой.
- Поддержка Django ORM, моделей и админки.
- Возможность превратить проект в полноценное веб-приложение без переписывания с нуля.
Сборка HTML:
nanodjango manage website.py distill generate \
--output-directory=output/ --collectstatic
Самая необычная возможность: можно управлять контентом через Django Admin и базу данных, а на выходе получать обычные статические HTML-файлы без серверной логики.
Подойдёт для документации, блогов, лендингов и небольших сайтов.
https://nanodjango.dev/blog/2026-10-static-site-builder/
👍4❤3🔥3🤔1
Media is too big
VIEW IN TELEGRAM
10 лет программирования на Python за 10 минут. База, которая сэкономит тебе годы
Всё, что обычно понимаешь только через годы работы и код-ревью: как Python хранит данные, питонический стиль, структуры данных, декораторы, генераторы, dataclass, обработка ошибок, типы и тесты, uv и pyproject.toml, профилирование, asyncio и numpy. Без синтаксиса для новичков, только опыт.
00:00 Вступление
00:16 Год 1. Как Python хранит данные
01:10 Год 2. Пиши по-питоновски
01:58 Год 3. Структуры данных
02:47 Год 4. Функции как объекты
03:41 Год 5. Генераторы
04:30 Год 6. ООП по-питоновски
05:22 Год 7. Ошибки и ресурсы
06:01 Год 8. Типы и тесты
06:42 Год 9. Окружение и проекты
07:27 Год 10. Производительность
08:12 Итоги
https://www.youtube.com/watch?v=yQH3Hoo7JeM
Всё, что обычно понимаешь только через годы работы и код-ревью: как Python хранит данные, питонический стиль, структуры данных, декораторы, генераторы, dataclass, обработка ошибок, типы и тесты, uv и pyproject.toml, профилирование, asyncio и numpy. Без синтаксиса для новичков, только опыт.
00:00 Вступление
00:16 Год 1. Как Python хранит данные
01:10 Год 2. Пиши по-питоновски
01:58 Год 3. Структуры данных
02:47 Год 4. Функции как объекты
03:41 Год 5. Генераторы
04:30 Год 6. ООП по-питоновски
05:22 Год 7. Ошибки и ресурсы
06:01 Год 8. Типы и тесты
06:42 Год 9. Окружение и проекты
07:27 Год 10. Производительность
08:12 Итоги
https://www.youtube.com/watch?v=yQH3Hoo7JeM
🥴6👍5🔥1
Python: одна строка, которая изменит список, а потом выбросит исключение
Что выведет этот код?
Варианты:
A
B
C
D
Здесь проверяется сразу несколько особенностей Python: неизменяемость кортежей, изменяемость вложенных объектов и поведение оператора
Какой вариант правильный и почему?
Что выведет этот код?
data = ([1, 2],)
try:
data[0] += [3]
except TypeError:
print("Ошибка!")
print(data)
Варианты:
A
Ошибка!
([1, 2],)
B
Ошибка!
([1, 2, 3],)
C
([1, 2, 3],)
D
TypeError: 'tuple' object does not support item assignment
Здесь проверяется сразу несколько особенностей Python: неизменяемость кортежей, изменяемость вложенных объектов и поведение оператора
+=.Какой вариант правильный и почему?
❤3👍2🔥1
Если давно хотел разобраться в теме, но постоянно откладывал или терялся среди десятков материалов, этот курс на Stepik поможет выстроить обучение последовательно.
Что получишь:
- Понятные объяснения без лишней воды.
- Практические задания для закрепления знаний.
- Возможность учиться в удобном темпе.
- Структурированный подход вместо хаотичного поиска информации.
Подойдёт тем, кто начинает с нуля или хочет систематизировать знания.
Начни прокачивать навыки уже сейчас:
https://stepik.org/course/303477/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1😁1
Python: задача, на которой легко ошибиться даже опытному разработчику 🧠
Что выведет этот код?
Варианты:
A
B
C
D
Здесь проверяется неочевидная особенность Python: порядок вычисления правой части множественного присваивания и последовательность присваивания целевых переменных.
У задачи есть подвох, связанный с тем, в какой момент Python вычисляет индекс
Какой вариант правильный? Объясните порядок выполнения по шагам.
Что выведет этот код?
a = [0, 1, 2]
i = 0
i, a[i] = 1, a[i] + 10
print(a, i)
Варианты:
A
[10, 1, 2] 1
B
[0, 10, 2] 1
C
[0, 1, 12] 1
D
IndexError
Здесь проверяется неочевидная особенность Python: порядок вычисления правой части множественного присваивания и последовательность присваивания целевых переменных.
У задачи есть подвох, связанный с тем, в какой момент Python вычисляет индекс
a[i].Какой вариант правильный? Объясните порядок выполнения по шагам.