Repolode
rayon-rs

rayon-rs/rayon

Uma biblioteca de paralelismo de dados para Rust que transforma iteradores sequenciais em paralelos com uma mudança mínima na API.

Estrelas
13,399
Forks
618
Issues abertas
233
Último commit
há 2 meses

O que é?

Rayon é uma biblioteca de paralelismo de dados para Rust. Sua interface principal, o iterador paralelo, permite transformar uma computação sequencial em paralela alterando uma chamada como iter() para par_iter(). Então, Rayon decide como dividir o trabalho em tarefas e ajusta essa divisão para maximizar o desempenho.

Para ter mais controle, Rayon oferece as funções join e scope para criar tarefas paralelas manualmente, além de pools de threads personalizados que podem ser usados no lugar do pool global padrão. Suas APIs são projetadas para garantir a ausência de data races; assim, em geral, o código que compila se comporta como na execução sequencial. Iteradores paralelos produzem os mesmos resultados que suas versões sequenciais, com a ressalva de que efeitos colaterais, como enviar dados por canais ou gravar em disco, podem ocorrer em uma ordem diferente.

Rayon é publicado no crates.io e requer rustc 1.85 ou posterior. No WebAssembly, por padrão, ele recorre à iteração sequencial; para usar multithreading nesse ambiente, é necessário um adaptador como wasm-bindgen-rayon.

Recursos principais

  • 01Transforma iteradores sequenciais em paralelos com uma pequena alteração, como trocar iter() por par_iter().
  • 02Oferece as funções join e scope para criar tarefas paralelas manualmente.
  • 03Permite usar pools de threads personalizados além do pool global padrão.
  • 04É projetado para garantir, no nível da API, a ausência de data races.
  • 05Oferece versões paralelas alternativas de alguns métodos de iteradores sequenciais.

Casos de uso

  • Acelerar loops limitados pelo desempenho da CPU que percorrem coleções grandes em aplicações Rust.
  • Paralelizar transformações de dados, como map, filter e sum, em slices ou vectors.
  • Criar cargas de trabalho personalizadas com paralelismo de tarefas usando join, scope ou pools de threads dedicados.
  • Executar código Rust com multithreading no navegador usando wasm-bindgen-rayon.

Início rápido

  1. 1

    Adicione Rayon às dependências do Cargo.toml

    [dependencies] rayon = "1.12"
  2. 2

    Traga os traits de iteradores paralelos para o escopo em cada módulo

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

    Altere foo.iter() para foo.par_iter() para executar o iterador em paralelo

Antes de usar

  • Requer rustc 1.85.0 ou mais recente.
  • No WebAssembly, o código recorre à iteração sequencial, a menos que você adicione separadamente o adaptador wasm-bindgen-rayon e sua configuração.

Tópicos

Perguntas frequentes

O que é rayon?
Uma biblioteca de paralelismo de dados para Rust que transforma iteradores sequenciais em paralelos com uma mudança mínima na API. Rayon é uma biblioteca de paralelismo de dados para Rust. Sua interface principal, o iterador paralelo, permite transformar uma computação sequencial em paralela alterando uma chamada como iter() para par_iter(). Então, Rayon decide como dividir o trabalho em tarefas e ajusta essa divisão para maximizar o desempenho.
rayon é gratuito? Qual é a licença?
rayon é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
rayon ainda é mantido?
Atualizado nos últimos 6 meses. O último commit de rayon foi em 28 de ago. de 2026.
Para que posso usar rayon?
Acelerar loops limitados pelo desempenho da CPU que percorrem coleções grandes em aplicações Rust. Paralelizar transformações de dados, como map, filter e sum, em slices ou vectors. Criar cargas de trabalho personalizadas com paralelismo de tarefas usando join, scope ou pools de threads dedicados. Executar código Rust com multithreading no navegador usando wasm-bindgen-rayon.
Como instalar rayon?
Adicione Rayon às dependências do Cargo.toml: [dependencies] rayon = "1.12" Traga os traits de iteradores paralelos para o escopo em cada módulo: use rayon::prelude::*; Altere foo.iter() para foo.par_iter() para executar o iterador em paralelo
Onde consigo rayon?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/rayon-rs/rayon

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados