我想根据一台机器的核心数生成一定数量的任务。在Rust中,有没有可以找到核心数的功能,还是应该运行外部命令并解析输出?
有一个crate可以实现这个功能:num_cpus。
参考资料:
在你的Cargo.toml
中添加以下内容:
[dependencies]
num_cpus = "1.0"
然后在您的源代码中:
extern crate num_cpus;
let num = num_cpus::get();
num_cpus::get_physical()
- Venryxstd::thread::available_parallelism
:use std::thread::available_parallelism;
let default_parallelism_approx = available_parallelism().unwrap().get();
在我的机器上,它返回了12,使用的是Ryzen 5 4600H处理器,这个数字与它拥有的逻辑处理器数量非常一致。
std::os::num_cpus
。例如:fn main() {
println!("{}", std::os::num_cpus());
}
default_sched_threads()
是公开的,然而,应该可以在某种程度上用于OP的目的。 - rodrigo现在可以使用:
std::os::num_cpus
pub fn num_cpus() -> uint
Rust版本:
$ rustc --version
rustc 0.13.0-nightly (d91a015ab 2014-11-14 23:37:27 +0000)
参考: