Repolode
rayon-rs

rayon-rs/rayon

순차 반복자를 거의 그대로 바꿔 병렬 처리할 수 있게 해 주는 Rust 데이터 병렬성 라이브러리입니다.

스타
13,399
포크
618
열린 이슈
233
마지막 커밋
2개월 전

어떤 프로젝트인가요?

Rayon은 Rust용 데이터 병렬성 라이브러리입니다. 주 인터페이스인 병렬 반복자를 사용하면 iter()를 par_iter()로 바꾸는 것처럼 호출 하나만 수정해 순차 연산을 병렬 연산으로 전환할 수 있습니다. 이후 Rayon이 작업을 태스크로 나누는 방법을 결정하고, 성능을 최대화하도록 분할 방식을 조정합니다.

더 세밀하게 제어하고 싶다면 join과 scope 함수로 병렬 태스크를 직접 만들 수 있으며, 기본 전역 스레드 풀 대신 사용할 사용자 지정 스레드 풀도 제공합니다. Rayon API는 데이터 레이스가 발생하지 않도록 설계되어 있어, 컴파일되는 코드는 대체로 순차 실행 때와 동일하게 동작합니다. 병렬 반복자는 순차 반복자와 같은 결과를 내지만, 채널 전송이나 디스크 쓰기 같은 부수 효과는 순서가 달라질 수 있습니다.

Rayon은 crates.io에 게시되어 있으며 rustc 1.85 이상이 필요합니다. WebAssembly에서는 기본적으로 순차 반복 방식으로 대체되며, 멀티스레딩을 사용하려면 wasm-bindgen-rayon 같은 어댑터가 필요합니다.

핵심 기능

  • 01iter()를 par_iter()로 바꾸는 정도의 작은 수정만으로 순차 반복자를 병렬 반복자로 전환합니다.
  • 02병렬 태스크를 직접 만들 수 있는 join 및 scope 함수를 제공합니다.
  • 03기본 전역 스레드 풀 외에 사용자 지정 스레드 풀도 지원합니다.
  • 04API 수준에서 데이터 레이스가 발생하지 않도록 설계되었습니다.
  • 05일부 순차 반복자 메서드에 대응하는 병렬 버전을 제공합니다.

활용 사례

  • Rust 애플리케이션에서 대규모 컬렉션을 순회하는 CPU 집약적 루프의 실행 속도를 높입니다.
  • 슬라이스나 벡터에 대한 map, filter, sum 같은 데이터 변환을 병렬화합니다.
  • join, scope 또는 전용 스레드 풀을 사용해 사용자 지정 태스크 병렬 작업을 구성합니다.
  • wasm-bindgen-rayon을 통해 브라우저에서 멀티스레딩을 사용하는 Rust 코드를 실행합니다.

빠른 시작

  1. 1

    Cargo.toml의 의존성에 Rayon을 추가합니다

    [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 데이터 병렬성 라이브러리입니다. Rayon은 Rust용 데이터 병렬성 라이브러리입니다. 주 인터페이스인 병렬 반복자를 사용하면 iter()를 par_iter()로 바꾸는 것처럼 호출 하나만 수정해 순차 연산을 병렬 연산으로 전환할 수 있습니다. 이후 Rayon이 작업을 태스크로 나누는 방법을 결정하고, 성능을 최대화하도록 분할 방식을 조정합니다.
rayon은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
rayon은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
rayon은(는) 아직 유지보수되고 있나요?
6개월 이내 업데이트. rayon의 마지막 커밋은 2026년 8월 28일입니다.
rayon은(는) 어디에 사용할 수 있나요?
Rust 애플리케이션에서 대규모 컬렉션을 순회하는 CPU 집약적 루프의 실행 속도를 높입니다. 슬라이스나 벡터에 대한 map, filter, sum 같은 데이터 변환을 병렬화합니다. join, scope 또는 전용 스레드 풀을 사용해 사용자 지정 태스크 병렬 작업을 구성합니다. wasm-bindgen-rayon을 통해 브라우저에서 멀티스레딩을 사용하는 Rust 코드를 실행합니다.
rayon는 어떻게 설치하나요?
Cargo.toml의 의존성에 Rayon을 추가합니다: [dependencies] rayon = "1.12" 각 모듈에서 병렬 이터레이터 트레이트를 스코프에 가져옵니다: use rayon::prelude::*; 이터레이터를 병렬로 실행하려면 foo.iter()를 foo.par_iter()로 변경합니다
rayon은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/rayon-rs/rayon

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트