检测MATLAB startup.m是否在worker上运行

Sam*_*rts 5 parallel-processing matlab

一位同事有一个MATLAB startup.m文件,其中包含交互式代码(它调用命令questdlg询问他希望在哪个项目目录中工作).

在直接运行MATLAB时,这对他来说很好.但是,他还需要并行运行MATLAB代码,并启动了一个matlabpool.

启动时,工作人员matlabpool正在运行他的startup.m文件,进入questdlg然后挂起(无限地,或直到Ctrl C).

一个简单的解决方案就是摆脱他的交互式代码startup.m,因为它并不是必不可少的.

但有没有办法检测这是否startup.m由一名工人开始运行 - 类似于isdeployedismcc?然后他可以保留他认为有用的交互式代码,但只在不启动工作人员时执行它.

该命令getCurrentWorker似乎可能是需要的,但我相信只有在执行任务时才有效,而不是在启动时.

Edr*_*ric 2

您可以使用该usejava函数来查看交互式桌面是否正在运行,这可能是一个足够好的近似值,除非您经常使用-nodesktop模式。

if usejava('desktop')
    questdlg(...);
end
Run Code Online (Sandbox Code Playgroud)