主要内容

毕竟

在后台运行完所有函数后再运行function

    描述

    例子

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

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

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

    您创建一个未来对象时:

    • 你在后台使用backgroundPool

    • 当您拥有并行计算工具箱™时,您可以在并行池中运行一个函数。

    有关使用的更多信息毕竟同时,看到使用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,延迟);结束

    使用辅助函数updateWaitbar更新等待栏后,每个未来完成。

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

    使用删除要关闭等候栏后的一切未来对象完成。

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

    定义辅助函数

    定义辅助函数updateWaitbar.函数的第一个元素递增用户数据属性,然后使用矢量来计算进度。

    函数updateWaitbar (w)%使用UserData属性更新等待栏。%检查waitbar是否为已删除对象的引用如果isvalid (w)增加完成迭代的数量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

    另请参阅

    ||