parfor比较难用,要求变量之间不能有干扰,必须能相互独立,这里推荐一下parfeval,相当于多开了n个matlab。
parfeval可以并行运行同一个函数,赋值不同的参数。
首先创建并行池-:
p = parpool(2);%这里相当于使用了两个核心,根据你的CPU核心数决定。
parfeval用于并行执行代码,其声明如下
%pool为并行池变量,就是上面创建的变量;
%fcn为函数句柄,直接在函数名前面加一个@
%numout是这个函数有几个输出参数
%X1.。。是函数的输入参数
F = parfeval(pool,fcn,numout,X1,...,Xm)
%并行计算
f(1) = parfeval(@fprintf,0, "hello, this is first Parfor, Id is %d",1);
f(2) = parfeval(@fprintf,0, "hello, this is first Parfor, Id is %d",2);%查看运行状态:
f.States
%取消某个后台函数的执行:
cancel(f(1))
%运行结束后,删除并行池
delete(gcp('nocreate'))
如果运行结束,要关闭并行池,
在工作区查看变量f(1)的值:
Diary是打印到屏幕的内容;Error是报错信息;OutputArguments是输出参数信息;State有三种状态:finished,running,quened,分别代表完成,运行中和等待中。