主要内容

追随者

在所有并行之后指定要调用的函数.Futures完成

描述

示例

产量=追逐(期货Funtocall.n自动评估Funtocall.关于所有期货的产出争论期货当它们全部完成并返回时产量保持结果。追随者评估Funtocall.关于所有期货输出参数的垂直串联。如果期货需求的输出参数的数量不同,追随者使用最小并忽略终止输出参数。追随者调用Funtocall.n输出参数。

有用的应用追随者是在并行计算期间更新用户界面(如地图和应用)使用Parfeval..例如,您可以将多个计算发送给工人使用Parfeval.并在所有完成使用时更新您的用户界面追随者

示例

产量=追逐(期货Funtocall.n,'passfuture',直接表现相同直接.如果直接真实追随者调用Funtocall.在一系列期货上期货而不是他们的产出参数。即使元素的元素也会发生这种情况期货遇到错误。

例子

崩溃

你可以使用追随者的所有组合输出上自动调用函数Parfeval.计算。

使用Parfeval.计算工人的随机载体。带默认首选项,Parfeval.创造一个parpool.自动如果没有创建一个。

对于idx = 1:10 f(idx)= parfeval(@rand,1,000,1);结束

在创建它们之后显示所有这些向量中的最大元素。追随者当所有期货准备好时,执行所有期货的函数处理。

追随(f,@(r)disp(max(r)),0);
0.9998

你可以结合起来after追随者自动调用期货结果的更多功能。两者after追随者生成可以再次使用的未来变量after追随者

使用Parfeval.计算工人的随机载体。带默认首选项,Parfeval.创造一个parpool.自动如果没有创建一个。

对于idx = 1:10 f(idx)= parfeval(@rand,1,000,1);结束
使用“本地”配置文件启动并行池(Parpool)...连接到8名工人。

在准备就绪时计算每个向量中的每个向量中的最大元素。after当它们准备好并创建另一个将来以保持结果时,执行每个将来的函数处理。

maxfuture = intereach(f,@(r)max(r),1);

计算其中的最小值,呼叫追随者在这个新的未来。追随者在全部完成后执行所有期货的组合输出参数的函数。在这种情况下,追随者执行的函数关于产出MaxFuture.完成并创建另一个未来以保持结果。

minFuture = afterAll(maxFuture, @(r) min(r), 1);

您可以使用使用结果fetchOutputs.FetchOutput.等待直到未来完成以收集结果。

fetchOutputs(minfuture)
ans = 0.9973.

你可以检查结果after通过呼叫fetchOutputs.它的未来变量。

fetchOutputs (maxFuture)
ans =.10×10.9996 0.9989 0.9994 0.9973 1.0000 1.0000 0.9989 0.9994 0.9998 0.9999

此示例显示如何将用户界面更新为计算完成。当您将计算卸载到工人使用时Parfeval.,所有用户界面都响应于Workers执行这些计算。在此示例中,您使用韦特栏创建一个简单的用户界面。

  • 使用after每次计算完成后更新用户界面。

  • 使用追随者在所有计算完成后更新用户界面。

使用韦特栏要创建图形句柄,H..当你使用时after或者追随者,这韦特栏函数更新图形句柄。有关处理对象的更多信息,请参阅处理对象行为

h = waitbar(0,“等待......”);

使用Parfeval.计算随机矩阵的特征值的真实部分。带默认首选项,Parfeval.如果尚未创建并行池,则自动创建并行池。

对于idx = 1:100 f(idx)= parfeval(@(n)真实(eig(randn(n))),1,5e2);结束

你可以使用after自动调用每个结果上的功能Parfeval.计算。使用after在每个将来完成后,计算每个输出阵列中的最大值。

maxfuture = intereach(f,@ max,1);

你可以使用财产获得期货的地位。创建一个逻辑阵列期货财产F.“完成”.使用的意思是计算成品期货的一小部分。然后,创建一个匿名函数updatewaitbar..该功能改变了分数等待条长度H.到成品期货的一小部分。

updatewaitbar = @(〜)waitbar(均值({f.state} ==“完成”),h);

使用afterupdatewaitbar.在每个未来的in之后更新小数等待条长度MaxFuture.完成。使用追随者删除在完成所有计算后关闭等待栏。

updateWaitbarFutures = afterEach (f updateWaitbar 0);毕竟(updateWaitbarFutures @(~)删除(h), 0);

使用追随者柱状图显示结果的直方图MaxFuture.在所有的未来完成之后。

showshistogramfuture = wherwall(maxfuture,@直方图,0);

默认情况下,未来变量的计算会导致错误,追随者不评估其功能。例如,如果要处理任何错误,例如,您可以使用要更新的用户界面,可以使用名称值对直接.设置到真实,将来变量传递给回调函数。你可以打电话fetchOutputs.在它上,处理输出,并处理任何可能的错误。

将计算发送给工人使用Parfeval..带默认首选项,Parfeval.创造一个parpool.自动如果没有创建一个。如果是你的Parfeval.计算导致错误,未来的变量错误及其错误财产反映它。

errorfuture = parfeval(@(n)randn(n),0,0.5);
使用“本地”配置文件启动并行池(Parpool)...连接到4名工人。
等待(errorFuture);errorFuture。错误
ans = ParallelException的属性:identifier: 'MATLAB:NonIntegerInput'消息:'大小输入必须是整数。' cause: {} remotecause: {[1×1 MException]} stack: [1×1 struct]

如果你使用追随者在此,未评估回调函数。在下面的代码中,msgbox.未被执行,因为未来的错误。

inlayAll(errorfuture,@()msgbox('操作完成'),0);

要处理导致错误的未来,请使用名称值对直接在呼唤时追随者.将来变量传递给回调函数而不是其输出。打电话fetchOutputs.在它上,并处理其输出。如果未来导致错误,fetchOutputs.抛出您可以捕获和处理的错误。例如,以下代码显示了一个错误对话框。

毕竟(errorFuture @handleError 0,“PassFuture”,真的);

功能HanderError(F)尝试输出= fetchOutputs(f);%用输出做点什么捕获errordlg('操作失败');结束结束

输入参数

崩溃

的数组并行.Future.Funtocall.在所有元素的组合输出上被调用在所有元素的组合输出。你可以使用Parfeval.创造期货。

如果有的话期货遇到错误,Funtocall.没有被调用,和产量完成错误。要查看未来是否使用错误完成,可以查看错误财产产量.如果您取消了一个元素期货,这将导致与元素遇到错误时相同的行为。

例子:未来= Parfeval(@ Rand,1,1000,1);追随(未来,@ Max,1);

数据类型:并行.Future.

执行功能,指定为调用所有期货的组合输出参数的函数期货当他们都准备好了。Funtocall.在matlab上进行评估®客户端,不在并行池工人上。

例子:funtocall = @max.

数据类型:功能手柄

指定为整数的输出数量,预期Funtocall.

例子:追随(期货,@ Max,1)

数据类型:标量子

指示符,指定为逻辑标量,用于确定输入参数的类型Funtocall..如果设置为真实未来阵列期货传递给Funtocall..否则,中所有future的输出参数期货通过了Funtocall..此参数是可选的,是默认情况下。

如果要处理任何错误,可以使用此方法。套直接到目前为止真实那么追随者调用Funtocall.关于产出期货,即使他们遇到错误。你必须打电话fetchOutputs.在输入论证上Funtocall.提取结果。如果未来导致错误,fetchOutputs.抛出您可以捕获和处理的错误。

例子:之后(期货,@(f)disp(fetchoptputs(f)),0,'passfuture',true)

数据类型:逻辑标量

输出参数

崩溃

未来,作为一个返回并行.Future.持有评估结果Funtocall.关于所有期货的综合产出论据期货当他们都准备好了。

要提取结果,调用fetchOutputs.产量

outputFutures =毕竟(期货funtocall nout);着干活,out2,……那outM] = fetchOutputs(outputFutures);
请注意,这相当于调用Funtocall.在取出输出后期货,除了追随者自动打电话Funtocall.当所有元素中期货完成:
[TMP1,TMP2,...,TMPN] = FetchOutputs(期货);[OUT1,OUT2,...,utm] = FUNTOCALL(TMP1,TMP2,... TMPN)
N是输出的数量期货m是指定的输出数量追随者输入参数n

提示

  • 使用追随者关于任何期货Parfeval.Parfevalonall.after追随者或包含它们组合的数组。例如,使用追随者自动调用另一个函数的更多功能after或者追随者.你可以调用追随者在他们完成之前和之后的期货上。

  • 使用取消在未来退回追随者取消其执行。如果你邀请追随者对于被取消的未来,这将导致与未来遇到错误相同的行为。

在R2018A介绍