parfor
循环当你运行parfor
-loop,您可以将广播变量或切片的输入变量从客户端发送到workers,或将切片的输出变量从workers发送回客户端。的保存
而且负载
必须支持向工作者发送或从工作者发送的万博1manbetx每个对象的函数。有关更多信息,请参见对象的保存和加载过程.
类中不支持将值赋给对象的切片属性或结构的切片字段万博1manbetxparfor
循环。
无效的 | 有效的 |
---|---|
S = struct;parfori = 1:4 s.SomeField(i) = i;结束 |
parforI = 1:4 x(I) = I;结束S = struct(“SomeField”, x); |
有关第一级索引约束的详细信息,请参见切变量.
类的句柄对象可以作为输入发送到parfor
循环。但是,在循环迭代期间为处理工作对象所做的任何更改都不会自动传播回客户端。也就是说,在循环内部所做的更改不会在循环之后自动反映出来。
类的输出变量,显式地将修改后的句柄对象赋值给parfor
循环。在下面的例子中,地图
是切片的输入/输出变量。
maps = {containers.Map(),containers.Map(),containers.Map()};parforIi = 1:numel(maps) mymap = maps{Ii};%输入片分配给本地副本为mymap(num2str(Jj)) = rand;结束Maps {ii} = mymap;%已修改的本地副本分配给输出片结束
不能直接调用以循环索引作为输入参数的函数句柄,因为不能将此变量与切片的输入变量区分开来。如果必须以循环索引变量作为参数调用函数句柄,请使用函数宏指令
.
下面的示例使用函数句柄和为
循环。
B = @sin;为A(ii) = B(ii);结束
一个相应的parfor
-loop不允许B
引用函数句柄。作为一种变通方法,使用函数宏指令
.
B = @sin;parforA(ii) = feval(B,ii);结束