c# - 并行:打印 CPU 核心数
问题描述
环境
- Ubuntu 20.04.3 LTS
- Intel Core i5-7300HQ CPU @ 2.50GHz × 4 (4 cores)
- .Net 核心版本:5.0.402
问题
打印项目正在运行的 CPU 内核编号(而不是可用内核的数量)。
代码
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Test {
class Program {
static void Main(string[] args) {
Run();
}
static void Run() {
string fileDirectory = "/path/to/files/";
List<string> symbols = new List<string> {
"AAPL",
"AMZ",
"NICK",
"ZEUS"
};
ParallelOptions parallelOptions = new ParallelOptions {MaxDegreeOfParallelism = Environment.ProcessorCount};
Console.WriteLine("parallelOptions.MaxDegreeOfParallelism = " + parallelOptions.MaxDegreeOfParallelism);
Parallel.ForEach(symbols, parallelOptions, symbol => {
// Pass symbol filepath to ProcessFile.
ProcessFile(String.Format("{0}{1}{2}", fileDirectory, symbol, ".csv"));
});
}
static void ProcessFile(string filePath){
Console.WriteLine("Processing " + filePath);
}
}
}
电流输出
parallelOptions.MaxDegreeOfParallelism = 4
Processing /path/to/files/AAPL.csv
Processing /path/to/files/AMZ.csv
Processing /path/to/files/ZEUS.csv
Processing /path/to/files/NICK.csv
期望的输出
parallelOptions.MaxDegreeOfParallelism = 4
Processing /path/to/files/AAPL.csv on CPU Core 1
Processing /path/to/files/AMZ.csv on CPU Core 4
Processing /path/to/files/ZEUS.csv on CPU Core 2
Processing /path/to/files/NICK.csv on CPU Core 3
问题
获取 CPU 内核数(而不是可用内核数)的正确方法是什么?编辑:理想情况下寻找 .Net Core 类/方法,而不是调用外部操作系统命令(Top、PS 等)。
解决方案
推荐阅读
- javascript - Removing class when iOS keyboard is open (HTML/JS/CSS)
- binary - Binary 12 is 1100 but signed 4 is also 1100. Can someone please explain how this works?
- resize - how openstack resize instance with raw format's local disk
- rust - Cargo doc 不会为既是库又是二进制的项目中的私有项目生成文档
- ios - Specified custom URL scheme is (null) but Info.plist do not contain such scheme in CFBundleURLTypes key
- python - With Python, save google.cloud.bigquery.job.query.QueryJob output to local JSON file
- reactjs - Making an a tag active in nextjs on changing link
- javascript - Can you call Html input value with the Id Instead of getElementById
- powershell - 在 Powershell 中组合 2 个 PSObject
- swift - 当 MacOS 应用程序在前台时显示通知标记