我正在研究WPF / C#桌面应用程序。
我有两种方法(让我们调用Tasks
)。每个任务占用CPU的10%,整个应用程序占用10%。所以,
当我在一个实例中运行两个任务时,它会分配CPU利用率(每个5%,显然进程变慢)
当我运行我的应用程序的2个实例时,在每个应用程序上运行一个任务。一切都很好。两项任务的总利用率为20%。
现在问题是:如何在我的应用程序的一个实例中使用20%的CPU利用率?
我无法添加代码,因为制作应用程序的MCVE非常复杂。
完成方案:
它是一个人脸识别应用程序。第一台30 fps的相机使用10%的CPU。当第二台摄像机启动时,两个fps都降至15 fps,总应用程序利用率仍为10%(它不会增加,但会减慢任务速度,就像使用fps一样)。
当我运行2个应用程序实例时,每个实例都有1个摄像头。两个实例的FPS均为30,CPU利用率总计为20%。这就是整个情景!
答案 0 :(得分:1)
首先,CPU使用率取决于您在异步运行的方法中所做的工作。如果有等待外部资源的操作(如果你有从Internet上获取数据的线程),或者有很多I / O操作,那么CPU使用率可能不高,因为线程主要是等待数据来而不是进行计算。执行大量计算操作时,线程上的CPU使用率会很高。您可以更改异步运行的代码以增加CPU使用率 - 这是一个非常一般的注释,但没有其他可以给出,因为我们没有看到您的代码。
其次 - 如果您在代码中直接使用Threads
,那么Priority
类上有一个Thread
属性,您可以尝试增加它 - 但您无法保证CPU使用率将增长。还要为线程设置高优先级以增加CPU使用率,您需要记住,您正冒着在同一台机器上运行的其他应用程序可能“缺乏”的风险(即,由于您的代码,它们的性能会降低) 。