当前位置:首页 > 通信资讯 > 正文

c语言获取cpu使用率(linux c 获取cpu使用率)

c语言获取cpu使用率(linux c 获取cpu使用率)

这篇文章我们分享一种如何在 .NETCore 中获取 CPU使用率的方法, 它所报告的这个值和 任务管理器 中报告的 CPU 使用值 差不多是一致的。

在 .NET Framework 中,很多人会用 PerformanceCounter 类做这件事情,参考如下代码:

  1. publicclassProgram
  2. {
  3. publicstaticvoidMain(string[]args)
  4. {
  5. while(true)
  6. {
  7. varcpuUsage=GetCpuUsageForProcess();
  8. Console.WriteLine(cpuUsage);
  9. }
  10. }
  11. privatestaticintGetCpuUsageForProcess()
  12. {
  13. varcurrentProcessName=Process.GetCurrentProcess().ProcessName;
  14. varcpuCounter=newPerformanceCounter("Process","%ProcessorTime",currentProcessName);
  15. cpuCounter.NextValue();
  16. return(int)cpuCounter.NextValue();
  17. }
  18. }

但 PerformanceCounter 在 .NETCore 中是没有的,所以只能采用其他方式了,其实在 System.Diagnostics.Process 类中有一个 TotalProcessorTime 属性,它可以准实时的统计当前进程所消耗的CPU处理器时间,参考如下代码:

  1. classProgram
  2. {
  3. publicstaticasyncTaskMain(string[]args)
  4. {
  5. vartask=Task.Run(()=>ConsumeCPU(50));
  6. while(true)
  7. {
  8. awaitTask.Delay(2000);
  9. varcpuUsage=awaitGetCpuUsageForProcess();
  10. Console.WriteLine(cpuUsage);
  11. }
  12. }
  13. publicstaticvoidConsumeCPU(intpercentage)
  14. {
  15. Stopwatchwatch=newStopwatch();
  16. watch.Start();
  17. while(true)
  18. {
  19. if(watch.ElapsedMilliseconds>percentage)
  20. {
  21. Thread.Sleep(100-percentage);
  22. watch.Reset();
  23. watch.Start();
  24. }
  25. }
  26. }
  27. privatestaticasyncTask<double>GetCpuUsageForProcess()
  28. {
  29. varstartTime=DateTime.UtcNow;
  30. varstartCpuUsage=Process.GetCurrentProcess().TotalProcessorTime;
  31. awaitTask.Delay(500);
  32. varendTime=DateTime.UtcNow;
  33. varendCpuUsage=Process.GetCurrentProcess().TotalProcessorTime;
  34. varcpuUsedMs=(endCpuUsage-startCpuUsage).TotalMilliseconds;
  35. vartotalMsPassed=(endTime-startTime).TotalMilliseconds;
  36. varcpuUsageTotal=cpuUsedMs/(Environment.ProcessorCount*totalMsPassed);
  37. returncpuUsageTotal*100;
  38. }
  39. }

c语言获取cpu使用率(linux c 获取cpu使用率)

可以看到程序每2s输出一次,观察到 output 和 任务管理器 中的CPU利用率基本是一致的。

译文链接:https://medium.com/@jackwild/getting-cpu-usage-in-net-core-7ef825831b8b

原文链接:https://mp.weixin.qq.com/s/MdL5HBcHgbo_3DMshc5Gfg

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。