主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

parfeval

在后台运行函数

自 R2021b 起

    说明

    F = parfeval(backgroundPool,fcn,numFcnOut,X1,...,Xm) 调度要在后台运行的函数 fcn。当 MATLAB® 正在运行函数 fcn 时,您可以运行其他代码。

    要在并行池上运行函数,请参阅 parfeval (Parallel Computing Toolbox)

    parfeval 在后台工作进程上运行函数 fcn。有关工作进程和后台的详细信息,请参阅Background Workers

    MATLAB 使用 X1X2、…、Xm 输入参量对每个工作进程以异步方式计算函数 fcn,并返回 numFcnOut 个输出参量。

    MATLAB 在函数 fcn 完成运行之前返回 Future 对象 F。您可以使用 fetchOutputs 从 future 对象检索结果。要停止运行函数 fcn,请使用 cancel 函数。有关 future 对象的详细信息,请参阅 Future

    示例

    F = parfeval(fcn,numFcnOut,X1,...,Xm) 调度要运行的函数 fcn

    MATLAB 在函数 fcn 完成运行之前返回 Future 对象 F

    在设计用于 Parallel Computing Toolbox™ 的代码中使用此语法。

    • 如果您没有 Parallel Computing Toolbox,则不能使用任何并行资源。该函数以串行方式运行。

    • 如果您有 Parallel Computing Toolbox,parfeval 会自动使用并行资源。

    示例

    全部折叠

    此示例说明如何使用 parfevalbackgroundPool 在后台运行函数。当您在后台运行函数时,您可以同时运行其他 MATLAB® 代码。

    使用 parfeval 运行函数 magic(3) 并检索一个输出。将 backgroundPool 指定为在后台运行该函数的第一个参量。当您使用 parfeval 时,系统会创建一个 Future 对象。

    f = parfeval(backgroundPool,@magic,1,3);

    要从后台检索输出,请使用 fetchOutputs。一旦 magic 执行完毕,MATLAB 会返回输出。

    fetchOutputs(f)
    ans = 3×3
    
         8     1     6
         3     5     7
         4     9     2
    
    

    此示例说明如何停止在后台运行的 MATLAB 函数。当您使用 parfeval 在后台运行函数时,MATLAB 会立即返回一个 Future 对象。长时间运行的函数会阻止其他函数在后台运行。要停止运行该函数,您必须使用 cancel 函数,而不是选择实时编辑器 > 运行 > 停止

    使用 parfeval 运行 pause(Inf) 而不检索任何输出。将 backgroundPool 指定为在后台运行该函数的第一个参量。当您使用 parfeval 时,系统会创建一个 Future 对象。

    f = parfeval(backgroundPool,@pause,0,Inf);

    检查 Future 对象的状态。

    f.State
    ans = 
    'running'
    

    当您运行 parfeval 时,系统会调度在后台运行的函数。当后台池没有足够的资源来运行该函数时,Future 将处于 'queued' 状态。当函数由后台池运行时,Future 将处于 'running' 状态。

    要停止该函数在后台运行,请取消 Future 对象。

    cancel(f)
    f.State
    ans = 
    'finished'
    

    该函数现在处于 'finished' 状态。

    输入参数

    全部折叠

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

    示例: fcn = @magic

    函数 fcn 请求的输出参量数目,指定为非负整数标量。

    numFcnOut 是您在运行 fcn(X1,...,Xm) 时请求的输出参量的数目。

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

    输入参量,指定为以逗号分隔的变量或表达式列表。

    输出参量

    全部折叠

    输出 Future,以 parallel.Future 对象形式返回。

    扩展功能

    全部展开

    版本历史记录

    在 R2021b 中推出