你能在低优先级的Windows上启动matlabpool / parpool吗?

时间:2013-11-27 19:15:32

标签: matlab wmic

在R2013a和Win 7 64bit和i5 3rd gen cpu上,以下内容启动了4名工作人员:

matlabpool 4

您可以在任务管理器中看到这些过程:

enter image description here

现在,我知道如何在low priority from a shortcut中启动MATLAB,我采用这种方法认为工作人员继承相同的优先级,但是他们得到正常默认情况下。

您知道如何以优先级启动matlabpool吗?

2 个答案:

答案 0 :(得分:1)

您可以在评论中结合@ natan的建议,将this file exchange submissionpoolStartup.m文件结合使用。有关如何使用poolStartup.m的详细信息,请参阅the doc

答案 1 :(得分:1)

我在Edric's answer之后创建了一个特定于项目的poolStartup.m脚本,这会降低工作人员的优先级。

启动池的语法如下:

matlabpool('open', 4, 'AttachedFiles',{'path\poolStartup.m'})

其中poolStartup.m将包含对WMIC的system()调用,Windows Management Instrumentation Command实用程序。 有关使用情况和示例的详细信息,请参阅The Grammar of WMIC,概要WMIC.exeWin32_Process class感兴趣的官方文档。

我选择了以下调用降低优先级(细分为几行以进行展示):

pid    = feature('getpid');
cmdstr = sprintf('wmic process where processid="%d" CALL setpriority 64', pid)
system(cmdstr)

有趣的部分是:

'wmic process where processid="PID" CALL setpriority 64'

一些注意事项:

  • 冲浪我经常找到where name="name.exe"条款。虽然调用where name="MATLAB.exe"会立即降低具有该名称的所有进程,即工作者和客户端,这可能不是所期望的效果。例如,我可能希望在客户端上保留正常的优先级。
  • 众所周知但每个工人都会调用undocumented feature() function,从而返回其特定的PID。
  • SetPriority类的Win32_Process方法将值64映射到“idle”,并且没有值为任务管理器的条目“low “。非常快速的检查显示,通过任务管理器将进程设置为“idle”“low”后,使用wmic查询的优先级是相同的。< / LI>
  • 我避免了可编译的解决方案,因为绝大多数MATLAB用户仍然对这些东西(双关语)有点不同。