能否在windows上以低优先级启动matlabpool/parpool?

能否在windows上以低优先级启动matlabpool/parpool?,matlab,wmic,Matlab,Wmic,在R2013a和Win 7 64位和i5第三代cpu上,以下启动了4个工作线程池: matlabpool 4 您可以在任务管理器中的流程中看到: 现在,我知道了如何在中启动MATLAB,我采用了这种方法,认为工作人员将继承相同的优先级,但默认情况下它们会正常 你知道如何以低优先级启动matlabpool吗?你可以在评论中结合@natan的建议与poolStartup.m文件一起使用。有关如何使用poolStartup.m的更多信息,请参阅。我在之后创建了一个特定于项目的poolStartup

在R2013a和Win 7 64位和i5第三代cpu上,以下启动了4个工作线程池:

matlabpool 4
您可以在任务管理器中的流程中看到:

现在,我知道了如何在中启动MATLAB,我采用了这种方法,认为工作人员将继承相同的优先级,但默认情况下它们会正常


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

你可以在评论中结合@natan的建议与
poolStartup.m
文件一起使用。有关如何使用
poolStartup.m

的更多信息,请参阅。我在之后创建了一个特定于项目的
poolStartup.m
脚本,该脚本降低了工作人员的优先级

启动池的语法如下所示:

matlabpool('open', 4, 'AttachedFiles',{'path\poolStartup.m'})
其中
poolStartup.m
将包含对WMIC的调用,WMIC是Windows Management Instrumentation命令实用程序。 有关用法和示例的更多信息,请阅读本文感兴趣的概要或官方文档

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

有趣的是:

'wmic process where processid="PID" CALL setpriority 64'
请注意:

  • 在网上冲浪时,我经常发现一个子句
    where name=“name.exe”
    。调用
    where name=“MATLAB.exe”
    会同时降低具有该名称的所有进程,即工人和客户机,这可能不是理想的效果。例如,我可能希望保留客户端的正常优先级
  • 已知但在每个worker上调用,从而返回其特定PID
  • Win32\u进程
    类的
    SetPriority
    方法将值64映射到“idle”,并且没有任务管理器条目“low”的值。快速检查表明,通过任务管理器将流程设置为“空闲”或“低”后,使用
    wmic
    查询的优先级是相同的
  • 我避免使用可编译的解决方案,因为绝大多数MATLAB用户仍然对这些东西有一些不同的混合(双关语)

您可以使用vba脚本设置所有运行的
matlab.exe
@DanielR的优先级。我在寻找matlab本身的一些未记录功能。您是否考虑过使用此脚本:?@natan谢谢!有趣的提交,它可以简化我正在考虑编写的matlabpool的包装器。这里建议您也可以使用命令与“isempty(getCurrentWorker)”结合使用,以确定“是否在worker上运行”和/或“parfevalOnAll()”。这提供了一些额外的灵活性,比如可以随时降低优先级。
'wmic process where processid="PID" CALL setpriority 64'