我如何更改Rayon使用的线程数?

问题描述 投票:1回答:1

我正在使用人造丝库:

extern crate rayon;

const N: usize = 1_000_000_000;
const W: f64 = 1f64/(N as f64);

fn f(x: f64) -> f64 {
    4.0/(1.0+x*x)
}

fn main() { 
    use rayon::prelude::*;
    let sum : f64 = (0..N)
        .into_par_iter()
        .map(|i| f(W*((i as f64)+0.5)))
        .sum::<f64>();
    println!("pi = {}", W*sum);
}

我想使用不同数量的线程运行此代码:1、2、3和4。

我已经阅读了有关How many threads will Rayon spawn?的文档,其中说:

默认情况下,Rayon使用与可用CPU数量相同的线程数。请注意,在启用了超线程的系统上,这等于逻辑核心而不是物理核心的数量。

如果要更改产生的线程数,可以将环境变量RAYON_NUM_THREADS设置为所需的线程数,或使用ThreadPoolBuilder::build_global function方法。

但是,步骤对我来说并不明确。如何在Windows 10 PC上执行此操作?

multithreading concurrency rust rust-cargo rayon
1个回答
1
投票

仅包含在fn main()中。 num_threads接受线程数。

ThreadPoolBuilder::build_global

© www.soinside.com 2019 - 2024. All rights reserved.