락 프리 큐, 워크 스틸링 덱, 채널, epoch 기반 GC, 원자 연산, 스코프 스레드를 제공하는 Rust 동시성 도구 모음입니다.
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
Cargo.toml의 의존성에 Rayon을 추가합니다
[dependencies] rayon = "1.12" - 2
각 모듈에서 병렬 이터레이터 트레이트를 스코프에 가져옵니다
use rayon::prelude::*; - 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 통계는 매일 갱신됩니다.
관련 프로젝트
메인 이벤트 루프를 막지 않고 CPU 집약적 작업을 실행하는 Node.js 워커 스레드 풀로, 큐와 취소 기능, 실행 통계를 제공합니다.
태스크 그래프를 활용한 태스크 병렬 C++ 프로그램 작성을 지원하며 CPU 멀티스레딩과 CUDA GPU를 지원하는 헤더 전용 라이브러리입니다.
대규모 AI 모델의 학습과 추론을 위한 PyTorch 기반 분산 시스템으로, 병렬화, 메모리 최적화, 이기종 학습을 지원합니다.
표준 라이브러리를 확장하는 추가 기능 230여 개를 제공하는 순수 Python 유틸리티 라이브러리로, 의존성이 없습니다.
Diffusers를 기반으로 캐싱, 병렬 처리, 양자화, CPU 오프로딩을 추가한 Diffusion Transformer(DiT)용 PyTorch 추론 엔진입니다.