使用Rust确定核心数

zep*_*ble 17 cpu-cores rust

我想根据机器的核心生成一定数量的任务.Rust中有什么东西可以找到核心数,或者我应该只运行外部命令并解析输出?

Mat*_*t G 27

现在有一个箱子可以做到这一点:https://crates.io/crates/num_cpus

将此添加到您的Cargo.toml:

[dependencies]
num_cpus = "0.2"
Run Code Online (Sandbox Code Playgroud)

然后在你的来源:

extern crate num_cpus;
let num = num_cpus::get();
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要物理核心的数量:`num_cpus::get_physical()` (2认同)

小智 25

std::thread::available_parallelism从 Rust 1.59.0 开始,您可以使用:

use std::thread::available_parallelism;
let default_parallelism_approx = available_parallelism().unwrap().get();
Run Code Online (Sandbox Code Playgroud)

在我的 Ryzen 5 4600H 机器上,它返回 12,这与其拥有的逻辑处理器数量非常一致。


rod*_*igo 5

您可以使用std::os::num_cpus。例:

fn main() {
    println!("{}", std::os::num_cpus());
}
Run Code Online (Sandbox Code Playgroud)

  • std :: os :: num_cpus现在消失了,default_sched_threads也消失了,所以问题现在没有答案。给出的答案很好,是Rust改变了。 (13认同)