文档

afterEach

指定一个函数调用后每个平行。将来完成

语法

outputFuture = afterEach(期货、funtocall nout)
outputFuture = afterEach(期货、funtocall、nout PassFuture, PassFuture)

描述

例子

outputFuture= afterEach (期货,funtocall,nout)评估funtocall输出参数的每一个元素期货自动成为准备好并产生一个未来,outputFuture,输出。funtocall评估在客户端而不是平行池工人。提取结果,调用fetchOutputsoutputFuture

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

如果一个元素的期货遇到错误,funtocall不是元素的评估期货然而,它是评估的其他元素期货不遇到错误。是否有任何错误期货,你可以检查错误的属性outputFuture。这个属性是一个空单元数组如果没有错误。如果有错误,它是一个包含尽可能多的细胞单元阵列期货期货。一个细胞包含一个错误如果相应的元素期货遇到一个错误,否则是空的。如果你取消的一个元素期货,这导致相同的行为好像遇到了一个错误的元素。

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

使用取消在未来的归来afterEach取消其执行。如果您调用afterEach取消了未来,afterEach行为一样,如果未来有一个错误。

例子

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

例子

全部折叠

您可以使用afterEach自动调用功能的结果parfeval计算。

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

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

显示每个向量中的最大元素后创建的。afterEach执行这个函数处理每个未来的输出当他们准备好了。

afterEach (f, @ (r) disp (max (r)), 0);
0.9975 0.9990 0.9982 0.9991 0.9982 0.9998 0.9999 0.9986 0.9996 0.9990

您可以组合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);

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

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

errorFuture = parfeval (@ (n) randn (n), 0, 0.5);等待(errorFuture);errorFuture.Error
ans = ParallelException属性:标识符:“MATLAB: NonIntegerInput”的信息:“大小的输入必须是整数。因为:{}remotecause: {[1×1 MException]}栈:[1×1 struct]

如果你使用afterEach在未来,回调函数中不涉及那些错误的元素在未来。在下面的代码中,对话框不是因为未来执行错误。

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

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

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

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

输入参数

全部折叠

期货,指定为数组parallel.Futurefuntocall在它的每个元素调用当他们准备好了。您可以使用parfeval创造一个未来。

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

数据类型:parallel.Future

函数执行,指定一个函数的输出参数被称为每个期货期货当他们准备好了。

例子:funtocall = @max

数据类型:函数处理

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

例子:afterEach(期货、@max、1)

数据类型:标量

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

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

数据类型:逻辑标量

输出参数

全部折叠

未来,作为一个返回parallel.Future,评估的结果funtocall在每一个期货期货当他们准备好了。

介绍了R2018a

这个主题有帮助吗?