MATLAB中fetchNext函数用法

目录

语法

说明

示例

取消一组 Future 对象

使用 fetchNext 更新进度条


        fetchNext函数的功能是检索 Future 数组中的下一个未读输出。

语法

[idx,Y1,...,Ym] = fetchNext(F)
[idx,Y1,...,Ym] = fetchNext(F,timeout)

说明

        [idx, Y1, ..., Ym] = fetchNext(F) 从数组 F 中检索下一个已完成且未读的 FevalFuture 对象的线性索引 idx,以及该 Future 的 m 个结果,分别为 Y1 到 Ym。

只能在使用 parfeval 创建的 FevalFuture 对象上使用 fetchNext。

        如果 FevalFuture 的 Read 属性为 false,则表示该 FevalFuture 未读。如果 F 中没有未读元素,MATLAB 将引发错误。

        如果 FevalFuture 的 State 属性为 'finished',则表示该 FevalFuture 已完成。如果没有未读元素处于 'finished' 状态,MATLAB 首先等待 F 中的某个元素完成。

        fetchNext 按完成顺序从 F 中读取元素。在 fetchNext 从数组 F 中检索到下一个未读的 FevalFuture 对象的输出后,MATLAB 将该 FevalFuture 的 Read 属性设置为 true。

        如果 fetchNext 读取的来自 F 的元素遇到错误,函数首先将 Future 元素的 Read 属性设置为 true,然后引发错误。

        [idx, Y1, ..., Ym] = fetchNext(F, timeout) 等待最多 timeout 秒,以等待 F 中的结果变为可用。

        如果经过 timeout 秒后,Future 数组 F 中没有未读元素,那么 idx 和所有其他输出参数将为空。

示例

取消一组 Future 对象

        多次运行一个函数,直到找到满意的结果为止。在这种情况下,当结果大于0.95时,将取消 Future 数组 f。

N = 100;
for idx = N:-1:1
    F(idx) = parfeval(backgroundPool,@rand,1); % Create a random scalar
end
result = NaN; % No result yet
for idx = 1:N
    [~, thisResult] = fetchNext(F);
    if thisResult > 0.95
        result = thisResult;
        % Have all the results needed, so break
        break;
    end
end
% With required result, cancel any remaining futures
cancel(F)
result

使用 fetchNext 更新进度条

        请求多个函数评估,并在等待完成时更新进度条。

N = 100;
for idx = N:-1:1
    % Compute the rank of N magic squares
    F(idx) = parfeval(backgroundPool,@rank,1,magic(idx));
end 
% Build a waitbar to track progress
h = waitbar(0,'Waiting for FevalFutures to complete...');
results = zeros(1,N);
for idx = 1:N
    [completedIdx,thisResult] = fetchNext(F);
    % Store the result
    results(completedIdx) = thisResult;
    % Update waitbar
    waitbar(idx/N,h,sprintf('Latest result: %d',thisResult));
end
delete(h)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值