主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

异步并行编程

使用 parfeval 在后台计算函数

您可以使用 parfeval 在后台计算函数,而无需等待它完成。在许多情况下,提前退出 for 循环是很方便的。例如,在优化过程中,当结果足够好时,您可以提前停止循环。您可以使用 parfevalparfevalOnAll 对一个或所有并行池工作单元执行此操作。如果您希望能够绘制中间结果,这样做可能很有用。使用 parfevalparfevalOnAll 与使用 parfor 不同,因为使用后者需要等待循环完成。

您可以结合使用 sendpoll,通过数据队列发送和轮询来自不同工作单元的消息或数据。使用 afterEach 可添加一个从数据队列接收到新数据时要调用的函数。

使用 afterEachafterAll 可在 Future 数组的每个或所有元素都完成后自动调用函数。该数组可以包含由 parfevalparfevalOnAllafterEachafterAll 返回的 Future。

函数

全部展开

parfeval在并行池工作单元上运行函数
parfevalOnAll在并行池中的所有工作单元上异步运行函数
FutureFunction scheduled to run
afterEachRun function after each function finishes running in the background
afterAllRun function after all functions finish running in the background
fetchOutputsRetrieve results from function running in the background
fetchNextRetrieve next unread outputs from Future array
cancelStop function running in the background
cancelAll取消所有作业或任务 (自 R2022a 起)
wait等待 future 完成
parallel.Pool工作单元并行池
send使用数据队列在客户端和工作单元之间发送数据
poll 从可轮询数据队列中检索已发送的数据
close关闭可轮询数据队列 (自 R2025a 起)
parallel.pool.DataQueue在客户端和工作单元之间发送和监听数据
parallel.pool.PollableDataQueue 在客户端和工作单元之间发送和轮询数据
afterEach定义一个函数,当数据队列接收到新数据时调用
ticBytes开始计算并行池中传输的字节数
tocBytes读取自调用 ticBytes 以来已传输了多少字节

主题

异步并行编程快速入门

应用

精选示例