文档

毕竟

指定一个函数来调用毕竟平行。期货交易完成

语法

outputFuture =毕竟(期货、funtocall nout)
outputFuture =毕竟(期货、funtocall、nout PassFuture, PassFuture)

描述

例子

outputFuture=毕竟(期货,funtocall,nout)评估funtocall在所有的期货的输出参数期货当他们都是完整的,并产生一个未来,outputFuture,来保存结果。毕竟评估funtocall垂直连接的所有期货的输出参数。如果输出参数的数量的元素在期货不同,毕竟使用最小和无视结束输出参数。毕竟调用funtocallnout输出参数。funtocall评估在客户端,而不是并行池工人。

提取结果,调用fetchOutputsoutputFuture。注意评估

outputFutures =毕竟(期货funtocall nout);着干活,out2,……,outM] = fetchOutputs(outputFutures);
相当于评估
[tmp1, tmp2,…,tmpN] = fetchOutputs(futures); [out1,out2,...,outM] = funtocall(tmp1,tmp2,...tmpN)
除了毕竟自动调用funtocall当所有元素期货完成了。N是输出的数量期货输出指定的数量吗毕竟与输入参数nout

一个有用的应用程序毕竟是更新的用户界面等情节和应用程序在并行计算使用吗parfeval。例如,您可以发送一些计算工人使用parfeval和更新你的用户界面当全部使用完毕竟

如果任何元素期货遇到错误,funtocall不调用,outputFuture完成了一个错误。看看未来的错误,你可以检查错误的属性outputFuture。如果你取消的一个元素期货,这导致相同的行为好像遇到了一个错误的元素。

使用毕竟在任何期货回来parfeval,parfevalOnAll,afterEach,毕竟,或者一个数组,其中包含的组合。例如,使用毕竟自动调用更多的功能在另一个的结果afterEach毕竟。您可以调用毕竟他们完成期货之前和之后。

使用取消在未来的归来毕竟取消其执行。如果您调用毕竟取消了未来,这导致相同的行为,如果将来遇到一个错误。

例子

outputFuture=毕竟(期货,funtocall,nout“PassFuture”,passFuture)相同的行为吗毕竟(期货funtocall nout)如果passFuture。如果passFuture真正的,毕竟调用funtocall在期货的数组期货而不是他们的输出参数。这种情况即使的元素期货遇到错误。您可以使用这种方法如果你想处理任何错误。你必须叫fetchOutputs在输入参数funtocall提取结果。如果未来的错误,fetchOutputs抛出一个错误,您可以捕获和处理。

例子

全部折叠

您可以使用毕竟自动调用函数的输出相结合parfeval计算。

使用parfeval计算随机向量的工人。默认首选项,parfeval创建一个parpool如果没有一个已经创建自动。

idx = 1:10 f (idx) = parfeval (@rand, 1000,1);结束

显示的最大元素在所有这些向量后创建的。毕竟执行这个函数处理组合输出的所有期货当他们都准备好了。

毕竟(f, @ (r) disp (max (r)), 0);
0.9998

您可以组合afterEach毕竟自动调用更多的功能在未来的结果。这两个afterEach毕竟生成未来变量可以被再次使用。

使用parfeval计算随机向量的工人。默认首选项,parfeval创建一个parpool如果没有一个已经创建自动。

idx = 1:10 f (idx) = parfeval (@rand, 1000,1);结束

计算每个向量中的最大元素当他们准备好了。afterEach执行这个函数处理每个未来的输出当他们成为准备好并创建另一个未来的结果。

maxFuture = afterEach (f, @ (r)马克斯(r), 1);

计算它们之间的最小值,调用毕竟在这个新的未来。毕竟执行一个函数的输出参数所有期货后完成。在这种情况下,毕竟执行的函数最小值的输出maxFuture在完成并创建另一个未来的结果。

minFuture =毕竟(maxFuture @ (r)分钟(r), 1);

你可以获取结果使用fetchOutputs。fetchOutput等到未来完成收集结果。

fetchOutputs (minFuture)
ans = 0.9963

你可以检查的结果afterEach通过调用fetchOutputs在其未来的变量。

fetchOutputs (maxFuture)
ans =10×10.9979 0.9980 0.9998 0.9996 0.9963 0.9992 0.9988 0.9994 0.9997 0.9989

您可以执行异步计算工人使用parfeval,让用户界面的响应性。使用afterEach更新用户界面在中间计算做好准备。使用毕竟更新的用户界面,当所有的计算都是准备好了。

创建一个简单的用户界面使用waitbar。

h = waitbar (0,“等……”);

使用parfeval在工人执行耗时的计算,例如,随机矩阵的特征值。计算在计算异步发生和用户界面更新。默认首选项,parfeval创建一个parpool如果没有一个已经创建自动。

idx = 1:10 0 f (idx) = parfeval (@ (n)真实(eig (randn (n))), 1、5 e2);结束

计算每个计算最大的价值当他们准备使用afterEach。更新完成的比例期货waitbar当每个人都完成后使用afterEach

maxFuture = afterEach (f @max 1);updateWaitbarFuture = afterEach (f, @ (~) waitbar(总和(strcmp (“完成”,{f.State})) /元素个数(f), h), 1);

关闭waitbar当所有的计算完成。使用毕竟updateWaitbarFuture继续自动关闭操作。毕竟得到的图处理updateWaitbarFuture并执行其功能。

closeWaitbarFuture =毕竟(updateWaitbarFuture @ (h)删除(h), 0);

显示直方图毕竟最大值计算。使用毕竟maxFuture继续自动运行。毕竟获得最大的值maxFuture并调用柱状图在他们身上。

showsHistogramFuture =毕竟(maxFuture @histogram 0);

为未来的变量计算误差时,默认情况下毕竟不评价其功能。如果你想处理任何错误,例如,你有一个你想要更新的用户界面,您可以使用名称-值对PassFuture。当设置为真的,未来变量传递给回调函数。你可以叫fetchOutputs,过程输出和处理任何可能的错误。

给工人使用计算parfeval。默认首选项,parfeval创建一个parpool如果没有一个已经创建自动。如果你的parfeval计算结果的误差,变量错误和它的未来错误属性反映了它。

errorFuture = parfeval (@ (n) randn (n), 0, 0.5);
开始平行池(parpool)使用“本地”概要文件…连接到4工人。
等待(errorFuture);errorFuture.Error
ans = ParallelException属性:标识符:“MATLAB: NonIntegerInput”的信息:“大小的输入必须是整数。因为:{}remotecause: {[1×1 MException]}栈:[1×1 struct]

如果你使用毕竟在未来,回调函数不是评估。在下面的代码中,对话框不是因为未来执行错误。

毕竟(errorFuture @()对话框(“操作完成”),0);

处理错误期货,使用名称-值对PassFuture当调用毕竟。未来变量传递给回调函数,你应该打电话fetchOutputs在它的输出和过程。如果未来的错误,fetchOutputs抛出一个错误,您可以捕获和处理。例如,下面的代码显示了一个错误对话框。

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

函数handleError (f)试一试输出= fetchOutputs (f);%做一些与输出errordlg (“操作失败”);结束结束

输入参数

全部折叠

期货,指定为数组parallel.Futurefuntocall调用所有元素的组合输出当他们都准备好了。您可以使用parfeval创造未来。

例子:未来= parfeval (@rand, 1000,1);毕竟(未来@max 1);

数据类型:parallel.Future

函数来执行指定的函数被称为输出参数的期货相结合期货当他们都准备好了。

例子:funtocall = @max

数据类型:函数处理

输出数量,指定为一个整数,预期funtocall

例子:毕竟(期货、@max、1)

数据类型:标量

指定为一个逻辑标量指标,确定输入参数的类型funtocall。如果设置为真正的,未来的数组期货传递给funtocall。否则,输出参数的期货期货被传递给funtocall。这个参数是可选的,默认情况下。

例子:毕竟(期货、@ (f) disp (fetchOutputs (f)), 0, PassFuture,真的)

数据类型:逻辑标量

输出参数

全部折叠

未来,作为一个返回parallel.Future,评估的结果funtocall在输出参数的期货相结合期货当他们都准备好了。

介绍了R2018a

这个主题有帮助吗?