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

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

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

Сообщение anna7233 »

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

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

Сообщение yaroslav_spb »

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

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

Сообщение lev_loop »

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

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

Сообщение vera1098 »

Спасибо, реально помогло! Полдня бился, а оказалось всё просто.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
artem_kernel93
Сообщения: 7
Зарегистрирован: Вс май 24, 2026 2:24 pm

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

Сообщение artem_kernel93 »

Попробовал — работает, но пришлось ещё права на папку поправить.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
ruslan_ml61
Сообщения: 33
Зарегистрирован: Вс май 10, 2026 8:57 pm

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

Сообщение ruslan_ml61 »

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

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

Сообщение semyon_null56 »

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

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

Сообщение sqlreact9621 »

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

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

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