Rust Rayon并行计算
使用Rayon库轻松将迭代器转换为并行执行 · 难度:入门 · +15XP
Rayon简介
Rayon是一个数据并行库,通过ParallelIterator特型将普通迭代器转换为并行执行,自动利用多核CPU。
基本用法
use rayon::prelude::*;
fn main() {
let numbers: Vec<u64> = (1..=100_000).collect();
let sum: u64 = numbers.par_iter().sum();
println!("总和: {}", sum);
let squares: Vec<u64> = numbers.par_iter()
.map(|n| n * n)
.collect();
println!("前10个平方: {:?}", &squares[..10]);
}
并行迭代器方法
| 方法 | 说明 |
|---|---|
| par_iter() | 创建并行迭代器 |
| par_sort() | 并行排序 |
| par_bridge() | 桥接普通迭代器 |
自定义并行任务
use rayon::join;
fn heavy_compute(x: u64) -> u64 {
x * x
}
fn main() {
let (result1, result2) = join(
|| heavy_compute(10),
|| heavy_compute(20),
);
println!("结果: {}, {}", result1, result2);
}
练习提示:使用par_iter()对一个大向量进行并行过滤和收集。