在 Home->parallel->parallel preferences 下,您可以取消选中“在执行并行关键字时自动创建并行池(如果尚不存在)”复选框。这使得所有parfor
循环都表现为正常for
循环。
如果我想出一种在代码中执行此操作而不是使用复选框的方法,我会回复您。
更新结果证明确实可以通过代码更改设置,尽管我不建议这样做,因为它涉及更改 MATLAB 的首选项文件。这取自 Yair Altman 的未记录的MATLAB 博客。
ps = parallel.Settings;
ps.Pool
ans =
PoolSettings with properties:
AutoCreate: 1
RestartOnClusterChange: 1
RestartOnPreferredNumWorkersChange: 1
IdleTimeout: 30
PreferredNumWorkers: 12
您需要将AutoCreate
开关更改为0
.
作为替代方案,我建议将您的所有内容包装parfor
在一个函数中,从而调用
parfor 1:N
output = function(..)
end
现在修改您的脚本/函数以Parallel
在顶部有一个开关:
if Parallel
parfor 1:N
output = function(..)
end
else
for 1:N
output = function(..)
end
end
您可以编辑和调试它function
本身,并将您的开关设置在您的程序之上以并行或串行执行。