Repolode
rayon-rs

rayon-rs/rayon

Библиотека для параллельной обработки данных в Rust: переводит последовательные итераторы в параллельные с минимальными изменениями API.

Звёзды
13,399
Форки
618
Открытые issues
233
Последний коммит
2 месяца назад

Что это?

Rayon — библиотека для параллельной обработки данных в Rust. Основной интерфейс библиотеки — параллельный итератор — позволяет превратить последовательное вычисление в параллельное, заменив, например, вызов iter() на par_iter(). Rayon сам распределяет работу по задачам и подстраивает это распределение для максимальной производительности.

Для более точного контроля Rayon предоставляет функции join и scope, с помощью которых можно вручную создавать параллельные задачи, а также позволяет использовать собственные пулы потоков вместо глобального пула по умолчанию. API библиотеки гарантирует отсутствие гонок данных, поэтому скомпилировавшийся код в целом ведёт себя так же, как при последовательном выполнении. Параллельные итераторы дают те же результаты, что и последовательные аналоги, однако побочные эффекты — например, отправка сообщений в канал или запись на диск — могут происходить в другом порядке.

Rayon опубликован на crates.io и требует rustc версии 1.85 или новее. В WebAssembly по умолчанию используется последовательный обход; для многопоточности там нужен адаптер, например wasm-bindgen-rayon.

Ключевые возможности

  • 01Преобразует последовательные итераторы в параллельные с минимальным изменением, например заменой iter() на par_iter().
  • 02Предоставляет функции join и scope для ручного создания параллельных задач.
  • 03Поддерживает собственные пулы потоков в дополнение к глобальному пулу по умолчанию.
  • 04API библиотеки разработан так, чтобы гарантировать отсутствие гонок данных.
  • 05Предоставляет параллельные версии некоторых методов последовательных итераторов.

Сценарии использования

  • Ускорение циклов с высокой нагрузкой на CPU при обработке больших коллекций в приложениях на Rust.
  • Параллельное выполнение преобразований данных, таких как map, filter и sum, для срезов или векторов.
  • Создание собственных задач с параллельным выполнением с помощью join, scope или выделенных пулов потоков.
  • Запуск кода на Rust с многопоточностью в браузере с помощью wasm-bindgen-rayon.

Быстрый старт

  1. 1

    Добавьте Rayon в зависимости Cargo.toml

    [dependencies] rayon = "1.12"
  2. 2

    Подключите трейты параллельных итераторов в каждом модуле

    use rayon::prelude::*;
  3. 3

    Замените foo.iter() на foo.par_iter(), чтобы выполнять итерацию параллельно

Что важно знать

  • Требуется rustc версии 1.85.0 или новее.
  • В WebAssembly используется последовательная итерация, если не добавить отдельно адаптер wasm-bindgen-rayon и его конфигурацию.

Темы

Частые вопросы

Что такое rayon?
Библиотека для параллельной обработки данных в Rust: переводит последовательные итераторы в параллельные с минимальными изменениями API. Rayon — библиотека для параллельной обработки данных в Rust. Основной интерфейс библиотеки — параллельный итератор — позволяет превратить последовательное вычисление в параллельное, заменив, например, вызов iter() на par_iter(). Rayon сам распределяет работу по задачам и подстраивает это распределение для максимальной производительности.
rayon можно использовать бесплатно? Какая у него лицензия?
rayon распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
rayon всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в rayon — 28 авг. 2026 г..
Для чего можно использовать rayon?
Ускорение циклов с высокой нагрузкой на CPU при обработке больших коллекций в приложениях на Rust. Параллельное выполнение преобразований данных, таких как map, filter и sum, для срезов или векторов. Создание собственных задач с параллельным выполнением с помощью join, scope или выделенных пулов потоков. Запуск кода на Rust с многопоточностью в браузере с помощью wasm-bindgen-rayon.
Как установить rayon?
Добавьте Rayon в зависимости Cargo.toml: [dependencies] rayon = "1.12" Подключите трейты параллельных итераторов в каждом модуле: use rayon::prelude::*; Замените foo.iter() на foo.par_iter(), чтобы выполнять итерацию параллельно
Где скачать rayon?
Исходный код и инструкции по установке — на GitHub: https://github.com/rayon-rs/rayon

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Система на базе PyTorch для распределённого обучения и инференса крупных AI-моделей с поддержкой параллелизма, оптимизации памяти и гетерогенного обучения.

41,4 тыс.+2 за неделю4,5 тыс.PythonApache-2.0Обновлён позавчера