6 个版本
0.2.0 | 2024年2月29日 |
---|---|
0.1.0 | 2024年2月19日 |
0.1.0-alpha4 | 2024年2月18日 |
0.1.0-alpha3 | 2024年2月4日 |
#481 在 并发
414 每月下载量
用于 3 个 Crates (2 直接)
21KB
87 行
rayon_iter_concurrent_limit
使用方便的宏限制单个 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 License,版本 2.0 LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0 或
- MIT 许可证 LICENSE-MIT 或 http://opensource.org/licenses/MIT,由您选择。
除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在作品中的任何贡献,将按照上述双重许可,不附加任何其他条款或条件。
依赖项
~1.5MB
~25K SLoC