#rayon #iterator

rayon_iter_concurrent_limit

使用方便的宏限制单个 rayon 并行迭代方法的并发性

6 个版本

0.2.0 2024年2月29日
0.1.0 2024年2月19日
0.1.0-alpha42024年2月18日
0.1.0-alpha32024年2月4日

#481并发

Download history 1/week @ 2024-04-07 53/week @ 2024-04-14 9/week @ 2024-04-21 69/week @ 2024-04-28 38/week @ 2024-05-05 56/week @ 2024-05-12 92/week @ 2024-05-19 29/week @ 2024-05-26 21/week @ 2024-06-02 130/week @ 2024-06-09 19/week @ 2024-06-16 50/week @ 2024-06-23 72/week @ 2024-06-30 119/week @ 2024-07-07 90/week @ 2024-07-14 99/week @ 2024-07-21

414 每月下载量
用于 3 个 Crates (2 直接)

MIT/Apache

21KB
87

rayon_iter_concurrent_limit

Latest Version Documentation msrv build

使用方便的宏限制单个 rayon 并行迭代方法的并发性。

文档概述了此包的动机、实现和限制。

示例

use rayon::iter::{IntoParallelIterator, ParallelIterator};
use rayon_iter_concurrent_limit::iter_concurrent_limit;

const N: usize = 1000;
let output = iter_concurrent_limit!(2, (0..100), map, |i: usize| -> usize {
    let alloc = vec![i; N];              // max of 2 concurrent allocations
    alloc.into_par_iter().sum::<usize>() // runs on all threads
})
.map(|alloc_sum| -> usize {
    alloc_sum / N                        // max of 2 concurrent executions
})
.collect::<Vec<usize>>();
assert_eq!(output, (0..100).into_iter().collect::<Vec<usize>>());

许可

rayon_iter_concurrent_limit 采用以下任一许可:

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在作品中的任何贡献,将按照上述双重许可,不附加任何其他条款或条件。

依赖项

~1.5MB
~25K SLoC