В 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.

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

9 минут назад

Операционная платформа «Альт Образование» бесплатна для школ — акция от «Базальт СПО»

Операционная платформа «Альт Образование» бесплатна для школ — акция от «Базальт СПО» Организация «Базальт СПО» запускает специальное предложение для школ: операционная система «Альт Образование» 11 п

Google добавила агентный аналитика видео в Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite

18 минут назад

Google добавила агентный аналитика видео в Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite

Google запустила агентный анализ видео для Gemini 3.7 Flash, 3.6 Flash и 3.5 Flash-Lite. Теперь модель анализирует видео не как последовательность кадров с фиксированной частотой, а сама решает, какие

Апдейт платформы «Октопус» от ГК «Юзтех»: историческая анализ и расширенная сопровождение инфраструктур

1 час назад

Апдейт платформы «Октопус» от ГК «Юзтех»: историческая анализ и расширенная сопровождение инфраструктур

В новых версиях «Октопус» мы сфокусировались на трёх направлениях: расширении возможностей управления ИТ-инфраструктурой, повышении производительности и развитии интеграций. Система получила новые сце

Frank Media рассказал о сложностях, с которыми столкнулись пользователи при попытке воспользоваться цифровым рублём

1 час назад

Frank Media рассказал о сложностях, с которыми столкнулись пользователи при попытке воспользоваться цифровым рублём

С 1 сентября должно было начаться массовое добавление цифрового рубля — третьей формы денег, которую Банк России обсуждает уже около шести лет. Тем не менее, судя по первым дням запуска, доступ к ново

1 час назад

Digital Q.Sensor BI от «Диасофт» модернизировал ИИ-агента: визуальные правки дашбордов без доступа к данным

«Диасофт» представил обновленные возможности ИИ-агента платформы Digital Q.Sensor BI: теперь он может вносить правки в готовый дашборд, ориентируясь в том числе на его визуальное отображение. ИИ-агент