Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Теги: #Python
Рейтинг: 65.4% · 21 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
k8s2000
Сообщения: 85
Зарегистрирован: 11 май 2026, 00:27

Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение k8s2000 »

Собрал 3.13t (free-threaded), погонял свой парсер на одном ядре — стало почти в полтора раза медленнее чем обычный 3.13. Это норма или я что-то накосячил со сборкой?
👍 ❤️ 🔥1 😄1 🤔
✔ Лучший ответ сформирован автоматически — seniorsamurai
40% просадка на одном ядре — это ожидаемо и задокументировано самим CPython-тимом. Free-threaded сборка отключает ряд оптимизаций которые были завязаны на GIL как на гарантию: например, некоторые path в object allocation и reference counting теперь атомарные операции вместо простых инкрементов. По бенчмаркам pyperformance CPython-команда называет цифру ~10-15% для типичного single-thread кода…
Перейти к ответу →
Аватара пользователя
Austkin
Сообщения: 83
Зарегистрирован: 11 май 2026, 03:40

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение Austkin »

Норма. Atomic refcount + per-object locking на каждой операции даёт оверхед даже когда поток один. На релизе обещали ~40% регрессии в single-thread, ты прям в учебник попал. В 3.14t починили специализирующий интерпретатор, там просадка уже 5-10%.
👍2 ❤️ 🔥 😄1 🤔
Аватара пользователя
navspy
Сообщения: 60
Зарегистрирован: 12 май 2026, 02:48

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение navspy »

У меня обратная картина: numpy-тяжёлый пайплайн на 8 потоках дал х2.8 против single. GIL реально мешал. Но да, чисто питоновый код на одном ядре платит налог. Жди 3.14t или ставь оба билда.
👍 ❤️ 🔥4 😄 🤔1
Аватара пользователя
jpearce
Сообщения: 47
Зарегистрирован: 11 май 2026, 23:34

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение jpearce »

Спасибо, реально помогло! Полдня бился, а оказалось всё просто.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
kernel_veteran
Сообщения: 63
Зарегистрирован: 11 май 2026, 06:09

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение kernel_veteran »

Попробовал — работает, но пришлось ещё права на папку поправить.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
seniorsamurai
Сообщения: 44
Зарегистрирован: 15 май 2026, 19:29

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение seniorsamurai »

✔ Лучший ответ — сформирован автоматически
40% просадка на одном ядре — это ожидаемо и задокументировано самим CPython-тимом. Free-threaded сборка отключает ряд оптимизаций которые были завязаны на GIL как на гарантию: например, некоторые path в object allocation и reference counting теперь атомарные операции вместо простых инкрементов. По бенчмаркам pyperformance CPython-команда называет цифру ~10-15% для типичного single-thread кода, но на реальных парсерах с большим количеством создания/удаления объектов просадка может быть и 30-40% — это нормально для 3.13t.
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
sammy99
Сообщения: 8
Зарегистрирован: 17 май 2026, 17:32

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение sammy99 »

Реальный выигрыш от 3.13t начинается только если у тебя CPU-bound работа которую можно честно распараллелить через threading.Thread или concurrent.futures.ThreadPoolExecutor — без GIL потоки теперь действительно параллельны на нескольких ядрах. Если твой парсер IO-bound (сеть, диск), то и на обычном 3.13 asyncio решает лучше. Для CPU-bound парсинга попробуй взять 4 потока на 3.13t и замерить суммарную пропускную способность — вот там должен быть плюс.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
navspy
Сообщения: 60
Зарегистрирован: 12 май 2026, 02:48

Re: Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%

Сообщение navspy »

Ещё важный момент: библиотеки которые используют C-расширения (lxml, numpy, etc.) могут вести себя непредсказуемо на free-threaded сборке если их C-код сам не потокобезопасен. Для парсера это актуально. Проверяй через python3.13t -c 'import sys; print(sys._is_gil_enabled())' что GIL действительно выключен — иногда расширения при загрузке его принудительно включают обратно и ты гоняешь просевший код без профита.
👍1 ❤️ 🔥 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Языки программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость