12 Aug 2026, 06:05 UTC787 views4 reactionsread 12 August 2026 Проверка одной группы объектов стоит времени, пропорционального размеру группы, а полный проход сборщика — всему содержимому процесса
28 июля на discuss.python.org появилось предложение научить сборщик мусора принимать подсказки: разработчик или анализатор кода говорит, что вот эта группа объектов, скорее всего, больше никому не нужна, а сборщик проверяет и освобождает её, не запуская полный обход поколения.
Смысл …
👍3❤1
11 Aug 2026, 06:05 UTC≈1,130 views1 reactionsread 12 August 2026 Процесс дорос до 57 гигабайт памяти и был убит ядром, потому что к каждой задаче прикреплялся живой стек вызовов
Хорхе Эскобар описал 27 июля в трекере playwright-python редкий вид утечки, где виноваты сразу две стороны. Синхронная обёртка библиотеки на каждый вызов создаёт задачу asyncio и вешает на неё атрибут со значением inspect.stack(0). Это не строки, а объекты FrameInfo, внутри которых лежат живые кадры стека…
❤1
10 Aug 2026, 06:05 UTC≈1,290 views2 reactionsread 12 August 2026 На маленьком проекте подмена времени стоит 1406,7 микросекунды против 1,5, на большом — 40 971,3 против тех же 1,5
Адам Джонсон, автор time-machine, замерил 3 августа, как две библиотеки подмены текущего времени ведут себя с ростом проекта. Прошлый такой замер он делал в 2021 году и получил разницу в 100–200 раз, теперь захотел показать не отношение, а саму зависимость от размера кодовой базы.
Стенд простой: генери…
❤2
9 Aug 2026, 13:05 UTC≈1,370 views5 reactionsread 12 August 2026 Многопоточный NumPy на сборке без GIL был в 7 раз медленнее процессов, стал в 4 раза быстрее
Всё началось с вопроса на Stack Overflow: пользователь пожаловался, что на сборке CPython без GIL расчёт через ThreadPoolExecutor заметно медленнее того же расчёта через ProcessPoolExecutor. Кумар Адитья из Quansight Labs описал 29 июля, как несколько месяцев вычищал причины этого в NumPy и самом CPython.
Нагрузка простая и…
🔥3❤2
6 Aug 2026, 12:21 UTC≈1,960 views3 reactionsread 12 August 2026 Python 3.15 добрался до rc1: ленивые импорты, frozendict и UTF-8 по умолчанию
4 августа вышел первый релиз-кандидат. Финал ожидается в октябре, так что смотреть, что придётся чинить, стоит уже сейчас. Самое заметное:
— PEP 810, ленивые импорты. Новый синтаксис lazy import json и lazy from json import dumps. Модуль не грузится, пока имя реально не тронули. Строго opt-in: меняется поведение только помеченных строк. Г…
🔥3
6 Aug 2026, 06:05 UTC≈1,880 views5 reactionsread 12 August 2026 Как в CPython 3.15 убрали проверку из горячего цикла интерпретатора
JIT в CPython нужен поток исполняемых инструкций, значит интерпретатор должен уметь записывать всё, что выполняет. Ключевой вопрос в том, сколько за эту возможность платят программы, которым запись не нужна. Кен Джин описал 1 июля путь к решению, попавшему в 3.15.
Первый вариант: два отдельных интерпретатора, обычный и записывающий. Для интерпретат…
🔥3❤1👀1
5 Aug 2026, 06:05 UTC≈1,900 views9 reactionsread 12 August 2026 Photo
Разбор HTML-страницы за 272 микросекунды вместо 15,3 миллисекунды
Бернат Габор собрал turbohtml, набор инструментов для HTML целиком на C: экранирование, разэкранирование, токенизация, запросы по селекторам, сериализация и операции с URL. Разбор страницы на 92 КБ занимает 272 мкс против 15,3 мс у BeautifulSoup, запрос по селектору 1,3 мкс против 20,8 мкс у lxml и 99,9 мкс у BeautifulSoup, токенизация 34,9 мкс против…
🔥8🤣1
4 Aug 2026, 06:05 UTC≈1,770 views3 reactionsread 12 August 2026 Шесть проверщиков типов для Python на одних и тех же исходниках
Справочник pydevtools прогнал mypy, pyright, Basedpyright, ty, Pyrefly и Zuban по скорости, строгости, выводу типов, поддержке в редакторах и лицензиям. Замеры делались на Apple Silicon, по пять запусков с отброшенным прогревом и очищенными кэшами, дата последнего обновления страницы 30 июля.
На библиотеке Rich, 38 тысяч строк: mypy 0,90 с, pyright 2,6…
👍3
3 Aug 2026, 06:42 UTC≈3,240 views5 reactionsread 12 August 2026 Photo
Rust научился ускорять операции с плавающей точкой, сохраняя контроль за точностью
Если вы держите Rust под рукой для кусков, где Python не хватает скорости, в Rust 1.98 появился повод присмотреться. Новый API разрешает компилятору агрессивнее оптимизировать операции с плавающей точкой, но сохраняет контроль за точностью округления. Это значит, что Rust-код, который вызывается из Python, может считать быстрее без пр…
👍4❤1
3 Aug 2026, 06:05 UTC≈1,680 views2 reactionsread 12 August 2026 uv 0.12.0: uv init теперь создаёт проект со сборочной конфигурацией
Astral выпустила uv 0.12.0 28 июля, первый крупный релиз после 0.11.0 в марте. Изменения касаются дефолтов инициализации, проверки хэшей и разбора архивов пакетов.
Раньше uv init создавал плоскую структуру без сборочной системы, и сборочную конфигурацию со структурой src приходилось добавлять отдельно. Теперь проект сразу пригоден для сборки.
🔘 uv…
❤1👍1
2 Aug 2026, 06:05 UTC≈1,760 views0 reactionsread 12 August 2026 Photo
Сервис убивало по нехватке памяти каждые несколько часов, но утечки в нём не было
RSS рос ступенями: 620 МБ, 890 МБ, 1,4 ГБ, 2,3 ГБ, 3,1 ГБ. Трафик, загрузка процессора и p99 при этом стояли ровно. Число объектов Python не увеличивалось, ни разбухшего словаря, ни списка, ни кэша найти не удалось. gc.collect() честно собирал циклический мусор, а RSS после него почти не опускался. Сакшам Шарма разобрал этот случай 8 и…
30 Jul 2026, 06:05 UTC≈2,180 views16 reactionsread 12 August 2026 Донхи На и Никита Соболев предложили PEP 841: запись f{1, 2, 3} создаёт frozenset, f{'a': 1} создаёт frozendict, f{} даёт пустой frozendict. Черновик написан 16 июля, обсуждение открыли 20 июля, целятся в Python 3.16.
Сейчас frozenset({1, 2, 3}) сначала собирает обычное множество, потом копирует его в неизменяемое, и на каждом выполнении ищет имя frozenset в области видимости. Соптимизировать это компилятор не может…
❤12🔥2😍2
Showing the 12 most recent of 26 posts we hold for @zen_of_python. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked ≈ was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.