В Python появятся стековые корутины в стиле Go за счет библиотеки Runloom

3 мин
В Python появятся стековые корутины в стиле Go за счет библиотеки Runloom

Сообщество независимых разработчиков представило открытую библиотеку Runloom. Инициатива внедряет стековые корутины в стиле языка Go в режим free-threaded Python 3.13t+ с отключенной глобальной блокировкой интерпретатора (GIL). Над инструментом работают пользователи GitHub, Reddit и Lobsters, однако к проекту уже проявили интерес инженеры из крупных технологических компаний, в том числе Cloudflare, Vercel и Hugging Face.

Технические особенности и архитектура

Runloom помогает эффективно обрабатывать высокие нагрузки, ограниченные операциями ввода-вывода. Обычно при обращении к внешним ресурсам поток просто простаивает в ожидании ответа, а процессор тратит время вхолостую. Runloom решает эту проблему: пока одна корутина ждет данные из сети или с диска, планировщик переключает процессор на другие полезные задачи. При этом библиотека даёт возможность писать привычный синхронный исходник без конструкций async и await.

Авторы заложили в основу инструмента сложную архитектуру, которая включает переключение контекста на Assembler, планировщик задач на языке C с алгоритмом work-stealing, интеграцию с сетевым стеком netpoll и поддержку средств синхронизации потоков.

Чтобы обеспечить совместимость, авторы предусмотрели изменение модуля во времени исполнения без изменения оригинального исходного кода (monkeypatching) на базе метода monkey.patch(). Средство подменяет стандартные блокирующие вызовы — например, в библиотеках socket, time или threading — на их кооперативные аналоги без необходимости переписывать все программа. При возникновении блокировки корутина ставится на паузу и чип переключается на другую задачу. Поток операционной системы одновременно продолжает работать без остановок. В дополнение к этого, разработчики встроили в библиотеку специальный мост для интеграции с asyncio — это даёт возможность запускать уже готовый асинхронный код с помощью Runloom.

30+ бесплатных курсов на ИТ-темы в Академии Selectel

Для начинающих и опытных специалистов.

Изучить →

Производительность и технические ограничения

По результатам тестов автора проекта, библиотека демонстрирует результаты, сопоставимые с производительностью планировщика языка Go. Рекордная скорость создания задач достигает 2,29 миллиона операций в секунду по сравнению с 2,10 миллиона у Go. Тем не менее такого показателя авторы добились исключительно при запуске бенчмарка из чистого C. Если разрабатывать корутины напрямую из Python-кода, скорость падает до 1,35 миллиона операций в секунду, что составляет приблизительно 65% от производительности Go. Одновременно пропускная способность при обработке запросов держится на уровне эталонных значений: она составляет 596 тысяч против 603 тысяч запросов в секунду на тестах keep-alive.

Несмотря на высокую скорость, у проекта есть два существенных ограничения. Первым стало повышенное потребление оперативной памяти: приостановленная корутина runloom требует приблизительно в 3,3 раза больше ресурсов, чем горутина, что связано с необходимостью хранить структуру кадров вызова CPython.

Второе ограничение — зависимость от режима интерпретатора. Чтобы достичь истинной многопоточности и распараллелить вычисления на все ядра процессора, придется собирать Python с отключенной глобальной блокировкой интерпретатора (GIL). При работе в стандартном режиме средство выступает только удобной альтернативой базовым асинхронным библиотекам без значительного прироста скорости.

Сферы применения

Набор модулей находится на ранней стадии разработки, но уже подходит для масштабирования бэкенд-сервисов, ML-систем и конвейеров обработки данных. Инициатива развивается как open-source инициатива, следовательно опробовать Runloom в действии и внести свой вклад в разработку планировщика может любой желающий в репозитории на GitHub.

Читают сейчас

Вышел Visual Studio Code 1.130: отдельный процедура для ИИ-агентов и упрощённая тест правок

2 часа назад

Вышел Visual Studio Code 1.130: отдельный процедура для ИИ-агентов и упрощённая тест правок

Microsoft выпустила Visual Studio Code 1.130. Основные изменения затронули работу с ИИ-агентами: их сессии постепенно переносят в отдельный процедура, а оболочку просмотра сгенерированных изменений сд

Датамайнеры обнаружили эмулятор Xbox 360, скрытый в контексте обратной совместимости оригинальной Xbox с ПК

2 часа назад

Датамайнеры обнаружили эмулятор Xbox 360, скрытый в контексте обратной совместимости оригинальной Xbox с ПК

Во второй половине июля Microsoft объявила о запуске программы обратной совместимости Xbox Backward Compatibility on PC, которая позволяет запускать игры с оригинальной Xbox на ПК и портативных устрой

3 часа назад

OpenAI сделала ChatGPT Health доступным для всех пользователей в США

OpenAI объявила о полном запуске сервиса ChatGPT Health в США. Теперь воспользоваться им могут все авторизованные пользователи старше 18 лет нев зависимости от тарифа — Free, Go, Plus или Pro. Функция

Selectel дарит домены новым клиентам VDS

3 часа назад

Selectel дарит домены новым клиентам VDS

При аренде VDS в Selectel до 30 сентября 2026 года все новые клиенты могут получить в подарок адрес сайта в зоне .ru или .рф. Подробности под катом. Читать далее

Евросоюз ввёл санкции против банков WB, Ozon, «Яндекса», МТС и десятков других финансовых организаций

3 часа назад

Евросоюз ввёл санкции против банков WB, Ozon, «Яндекса», МТС и десятков других финансовых организаций

Евросоюз согласовал и утвердил 21-й пакет санкций против России, они коснутся сфер финансов, энергетики, торговли и криптовалюты, заявил глава Европейского совета Антониу Кошта. В соответствии с публи