Rust 并发编程工具集,提供无锁队列、工作窃取双端队列、通道、原子类型等组件。
rayon-rs/rayon
Rust 数据并行库,只需修改少量代码即可把顺序迭代器改为并行执行。
- Star
- 13,399
- Fork
- 618
- 未关闭 Issue
- 233
- 最近提交
- 2个月前
这是什么?
Rayon 是一个面向 Rust 的数据并行库。它的核心接口是并行迭代器,开发者只需把 iter() 改为 par_iter(),就能把顺序计算变成并行计算。Rayon 会自动决定如何把数据切分为任务,并根据运行情况调整划分方式以获得较好性能。
如需更精细的控制,Rayon 还提供 join 和 scope 函数用于手动创建并行任务,也支持创建自定义线程池来替代默认的全局线程池。其 API 设计保证无数据竞争,因此能通过编译的代码通常与顺序执行的结果一致。并行迭代器的结果与顺序版本相同,但带有副作用的操作(如通道发送或写入磁盘)可能以不同顺序发生。
Rayon 发布在 crates.io 上,要求 rustc 1.85 或更高版本。在 WebAssembly 环境下默认退化为顺序迭代,若需多线程支持,需要配合 wasm-bindgen-rayon 等适配器使用。
核心功能
- 01将顺序迭代器改为并行迭代器,通常只需修改一处调用。
- 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 还在维护吗?
- 半年内有更新。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
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Node.js 工作线程池,把计算密集型任务转移到子线程执行,避免阻塞主事件循环。
一个仅含头文件的 C++ 库,用任务图编写任务并行程序,支持多线程与 CUDA GPU。
基于 PyTorch 的大模型分布式训练与推理系统,提供并行策略和显存优化等能力。
纯 Python 工具库,提供 230 多个扩展标准库的数据结构与工具函数,无外部依赖。
基于 PyTorch 的 DiT 推理引擎,在 Diffusers 之上提供缓存、并行、量化和 CPU 卸载加速。