Main Content

backgroundPool

在后台运行代码的环境

自 R2021b 起

    说明

    使用后台池在后台运行代码。当您在后台运行代码时,您可以同时在 MATLAB® 会话中运行其他代码。

    创建对象

    描述

    p = backgroundPool 返回后台池。

    示例

    属性

    全部展开

    此 属性 为只读。

    要在后台池上运行的 FevalFuture 对象的队列,指定为 FevalQueue 对象。您可以使用此属性来检查并行池的挂起的和正在运行的 future 变量。要创建 future 变量,请使用 parfeval (Parallel Computing Toolbox)parfevalOnAll (Parallel Computing Toolbox)。有关 future 变量的详细信息,请参阅 Future

    数据类型: FevalQueue

    此 属性 为只读。

    工作进程数,指定为正整数标量。

    • 如果您没有 Parallel Computing Toolbox™ 的许可证,则该值为 1

    • 如果您有 Parallel Computing Toolbox 的许可证,NumWorkers 等于您拥有的物理内核的数目。例如,如果在具有四个物理内核的计算机上运行 MATLAB,则值为 4。在第一次使用 backgroundPool 之前,您可以使用 maxNumCompThreads 减小此值。

    此 属性 为只读。

    指示后台池是否繁忙的标志,指定为 truefalse。如果池有未完成的工作要完成,则池处于繁忙状态。

    对象函数

    parfeval在后台运行函数
    parfevalOnAll (Parallel Computing Toolbox)在并行池中的所有工作进程上异步运行函数

    示例

    全部折叠

    此示例说明如何使用 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
    
    

    此示例说明如何从 Amazon® S3 存储桶中读取图像的后端处理方式。

    使用一个图像数据存储连接到您的存储桶。有关如何设置 S3 存储桶访问权限的详细信息,请参阅处理远程数据

    "s3://MyBucket/data" 替换为 S3 存储桶中一个数据文件夹的 URL。

    ds = imageDatastore("s3://MyBucket/data");

    使用 parfeval 从 S3 存储桶中读取数据。将 backgroundPool 指定为在后台运行该函数的第一个参量。然后,从数据存储中读取所有数据。

    f = parfeval(backgroundPool,@readall,1,ds);

    从 S3 存储桶下载数据时,您可以运行其他函数。要从后台检索所有图像,请使用 fetchOutputs。一旦 readall 执行完毕,MATLAB 会返回输出。

    T = fetchOutputs(f);
    imout = imtile(T);
    imshow(imout)

    局限性

    • 使用 parpool(‘Threads’)backgroundPool 创建的池都是基于线程的池,它们利用相同的资源。一个池上的活动可能会阻止另一个池上的活动,反之亦然。此外,这些池之间会共享持久数据和随机数生成流状态。有关控制随机数流的详细信息,请参阅控制工作进程上的随机数流 (Parallel Computing Toolbox)

    扩展功能

    版本历史记录

    在 R2021b 中推出