Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Рейтинг: 0% · 0 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Ответить
Аватара пользователя
pleki
Сообщения: 34
Зарегистрирован: 11 май 2026, 03:03

Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение pleki »

Есть сервис разбора выгрузок (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 в проде? Интересует бэкенд, не дата-саенс.
👍3 ❤️1 🔥1 😄 🤔
✔ Лучший ответ сформирован автоматически — torchchan
fpga_lord писал(а):multiprocessing и так масштабируется масштабируется ровно до момента, когда процессам нужно общее состояние. У нас справочник на 3 гига, read-only. С процессами это либо fork и молиться на copy-on-write, либо 12 копий в памяти, либо городить shared_memory с ручной разметкой. Плюс на каждый таск pickle туда-обратно, у нас на сериализацию уходило до 30 процентов времени таска. С …
Перейти к ответу →
Аватара пользователя
fpga_lord
Сообщения: 56
Зарегистрирован: 16 май 2026, 06:00

Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение fpga_lord »

а зачем, если multiprocessing и так масштабируется? процессы изолированы, упал один, остальные живут. двадцать лет так жили
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
torchchan
Сообщения: 14
Зарегистрирован: 15 май 2026, 03:16

Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение torchchan »

✔ Лучший ответ — сформирован автоматически
fpga_lord писал(а):multiprocessing и так масштабируется
масштабируется ровно до момента, когда процессам нужно общее состояние. У нас справочник на 3 гига, read-only. С процессами это либо fork и молиться на copy-on-write, либо 12 копий в памяти, либо городить shared_memory с ручной разметкой. Плюс на каждый таск pickle туда-обратно, у нас на сериализацию уходило до 30 процентов времени таска. С потоками всё это исчезает как класс, объект один, передаётся ссылка. Так что 3.14t не про моду, а про вполне конкретные деньги за память на серверах.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
eqweqwe
Сообщения: 4
Зарегистрирован: 10 май 2026, 23:35

Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение eqweqwe »

красиво живёте. у нас на проде 3.8 на центоси, обновление питона согласовывают через три отдела и год. читаю тред как фантастику
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
anton_k8s
Сообщения: 26
Зарегистрирован: 12 май 2026, 03:23

Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение anton_k8s »

pleki писал(а):общий dict правился из разных потоков без локов, раньше просто везло
уточню, везло вам не из-за GIL, как многие думают. GIL гарантирует атомарность отдельных байткод-операций, а какой-нибудь d[k] += 1 это уже три операции, гонка там была и на 3.8, просто окно узкое. Free-threading окно расширил, и скрытое говно всплыло. Это не новый класс багов, это старые баги, которые наконец видно. Погоняйте тесты под нагрузкой в несколько потоков, ещё всплывёт.
👍2 ❤️1 🔥1 😄 🤔
Аватара пользователя
lena87
Сообщения: 18
Зарегистрирован: 11 май 2026, 04:24

Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение lena87 »

@fpga_lord, так это не проблема питона, это проблема вашей конторы хах. 3.8 даже секурити-фиксы не получает с 2024
👍2 ❤️1 🔥 😄1 🤔
Аватара пользователя
ollies
Сообщения: 33
Зарегистрирован: 11 май 2026, 16:28

Re: Перевёл бэкенд на free-threaded Python 3.14: минус GIL, плюс пара седых волос

Сообщение ollies »

по вебу если кто спросит: гонял gunicorn с gthread на 3.14t, на обычном django-приложении прироста почти нет, всё время уходит на ожидание базы, GIL там и так никому не мешал. Смысл есть, только если в запросе реальный cpu: отчёты, парсинг, картинки. Тащить 3.14t на io-bound апи ради моды смысла ноль, только с колёсами намучаетесь.
👍2 ❤️ 🔥 😄1 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

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

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

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