主要内容

毕竟

在后台所有函数运行完成后运行函数

    描述

    例子

    B=毕竟(一个fcnn返回一个未来对象B运行函数fcn的所有元素后自动未来数组一个完成。

    MATLAB®运行函数fcn中每个元素的串联输出一个.输出日元…,从每个未来对象按线性索引顺序垂直连接。例如,如果一个是一个双元素未来向量和输出日元y2从第一和第二未来对象,MATLAB运行fcn([日元;y2)全部元素一个完成。

    如果未来数组一个元素时,MATLAB只运行函数一次。当预定函数fcn完成,未来对象B完成。

    您创建一个未来对象时:

    • 使用。在后台运行函数backgroundPool

    • 当您有parallel Computing Toolbox™时,可以在并行池上运行函数。

    有关使用的更多信息毕竟同时,看到使用afterEach和afterAll来运行回调函数(并行计算工具箱)

    如果有任何元素一个遇到错误,则错误的属性B是一个MException

    B=毕竟(一个fcnnPassFuture = true)运行fcn (A)而不是使用每个元素的串联输出一个

    错误的属性B是一个空MException即使数组中有一个或多个元素一个遇到一个错误。

    例子

    全部折叠

    这个例子展示了如何使用afterEach用后台运行的函数的进度更新一个等待条。

    创建一个等待条,w

    w = waitbar (0,“请等待…”);

    设置您的迭代次数循环,N.存储当前已完成的迭代次数,0,以及迭代的总次数,N,在用户数据属性的等待栏。

    N =20.;w.UserData = [0 N];

    运行一个循环与N迭代。在每个迭代中,使用parfevalbackgroundPool运行暂停在一个随机数秒的背景中。存储每个未来对象。

    i = 1:N delay = rand;f (i) = parfeval (backgroundPool @pause 0,延迟);结束

    使用helper函数updateWaitbar更新等待栏未来完成。

    afterEach (f, @ (~) updateWaitbar (w), 0);

    使用删除关闭等待栏后,所有未来对象完成。

    毕竟(f, @(~)删除(w), 0);

    定义辅助函数

    定义helper函数updateWaitbar.函数的第一个元素加1用户数据属性,然后使用矢量计算进度。

    函数updateWaitbar (w)%使用UserData属性更新等待条。%检查waitbar是否是对已删除对象的引用如果isvalid (w)%增加已完成的迭代次数w.UserData(1) = w.UserData(1) + 1;计算进度progress = w.UserData(1) / w.UserData(2);%更新等待栏waitbar(进步,w);结束结束

    输入参数

    全部折叠

    输入未来对象,指定为平行的。未来标量或数组。

    MATLAB运行函数fcn在每个元素之后一个完成。如果有任何元素一个遇到错误并指定PassFuture作为真正的毕竟仍在运行fcn使用该元素。

    • 如果您指定PassFuture作为真正的时,函数运行为fcn (Aj)使用每个未来元素Aj一个.如果有任何元素一个遇到错误,毕竟不会以错误结束。

    • 否则,函数以如下方式运行Xm fcn (X1,…)使用输出X1,…,Xm从每个未来元素一个.如果有任何元素一个遇到错误,毕竟以一个错误结束。

    如果未来数组元素,MATLAB运行函数次了。当预定函数fcn完成,未来对象B完成。

    例子:一个= parfeval (backgroundPool @magic 1、3);

    要运行的回调函数,指定为函数句柄。

    例子:fcn = @magic

    输出参数的数量,指定为非负整数标量。

    • 如果您指定PassFuture作为真正的n是否运行时期望输出参数的数量fcn (A)使用未来数组一个

    • 否则,n是否运行时期望输出参数的数量fcn (Y1,…,Ym)使用垂直连接的输出日元…,从每个元素Aj未来数组一个

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    输出参数

    全部折叠

    输出未来对象,返回为平行的。未来对象。

    当您设置PassFuture,你改变错误的属性B

    • 如果PassFuture真正的,错误的属性B是一个空MException即使数组中有一个或多个元素一个遇到一个错误。

    • 否则,如果其中任何一个元素一个遇到错误,则错误的属性B是一个MException对象。

      要查找错误的原因,请使用导致的属性B.Error

    另请参阅

    ||