Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос
Рейтинг: 0% · 0 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос
Есть сервис разбора выгрузок (xml плюс немного numpy), упирался в cpu, крутился через multiprocessing на 12 воркеров. Перевёл на 3.14t, ставится одной командой uv python install 3.14t, дальше всё как обычно. Итог: ThreadPoolExecutor на 8 потоков даёт x6.2 против одного потока, по памяти вместо 12 процессов по 400 метров стал один на 1.9 гига. Однопоток просел процентов на 7, пережить можно.
Шишки. Колёса cp314t до сих пор не у всех: numpy, pydantic, orjson норм, confluent-kafka собирал сам, lxml завёлся не с первой попытки. И главное, гонки теперь ловятся не теоретически, а практически. Нашли два места, где общий dict правился из разных потоков без локов, раньше просто везло.
Кто ещё гоняет 3.14t в проде? Интересует бэкенд, не дата-саенс.
Шишки. Колёса cp314t до сих пор не у всех: numpy, pydantic, orjson норм, confluent-kafka собирал сам, lxml завёлся не с первой попытки. И главное, гонки теперь ловятся не теоретически, а практически. Нашли два места, где общий dict правился из разных потоков без локов, раньше просто везло.
Кто ещё гоняет 3.14t в проде? Интересует бэкенд, не дата-саенс.
✔ Лучший ответ сформирован автоматически — torchchan
fpga_lord писал(а):multiprocessing и так масштабируется масштабируется ровно до момента, когда процессам нужно общее состояние. У нас справочник на 3 гига, read-only. С процессами это либо fork и молиться на copy-on-write, либо 12 копий в памяти, либо городить shared_memory с ручной разметкой. Плюс на каждый таск pickle туда-обратно, у нас на сериализацию уходило до 30 процентов времени таска. С …
Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос
✔ Лучший ответ — сформирован автоматически
масштабируется ровно до момента, когда процессам нужно общее состояние. У нас справочник на 3 гига, read-only. С процессами это либо fork и молиться на copy-on-write, либо 12 копий в памяти, либо городить shared_memory с ручной разметкой. Плюс на каждый таск pickle туда-обратно, у нас на сериализацию уходило до 30 процентов времени таска. С потоками всё это исчезает как класс, объект один, передаётся ссылка. Так что 3.14t не про моду, а про вполне конкретные деньги за память на серверах.fpga_lord писал(а):multiprocessing и так масштабируется
Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос
уточню, везло вам не из-за GIL, как многие думают. GIL гарантирует атомарность отдельных байткод-операций, а какой-нибудь d[k] += 1 это уже три операции, гонка там была и на 3.8, просто окно узкое. Free-threading окно расширил, и скрытое говно всплыло. Это не новый класс багов, это старые баги, которые наконец видно. Погоняйте тесты под нагрузкой в несколько потоков, ещё всплывёт.pleki писал(а):общий dict правился из разных потоков без локов, раньше просто везло
Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос
@fpga_lord, так это не проблема питона, это проблема вашей конторы хах. 3.8 даже секурити-фиксы не получает с 2024
Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос
по вебу если кто спросит: гонял gunicorn с gthread на 3.14t, на обычном django-приложении прироста почти нет, всё время уходит на ожидание базы, GIL там и так никому не мешал. Смысл есть, только если в запросе реальный cpu: отчёты, парсинг, картинки. Тащить 3.14t на io-bound апи ради моды смысла ноль, только с колёсами намучаетесь.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
- iOS 26: перевёл апп на Liquid Glass — половина кнопок не читается на фоне фоток
10 ответов · 1217 просмотров
-
-
- Кто реально гонял Python 3.13t free-threaded? У меня одиночный поток просел на 40%
7 ответов · 633 просмотров
-
- Что реально спрашивают на system design в 2026 для бэкенда, собрал с 6 собесов
7 ответов · 455 просмотров
-
- Перешёл из бэкенда в ML и слегка в шоке — это нормально что 80% времени это данные?
8 ответов · 333 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя