ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fetchNext

利用可能な次の未読の FevalFuture 出力を取得する

構文

[idx,B1,B2,...,Bn] = fetchNext(F)
[idx,B1,B2,...,Bn] = fetchNext(F,TIMEOUT)

説明

[idx,B1,B2,...,Bn] = fetchNext(F) は、Future F の配列にある未読の FevalFuture が完了するまで待機し、その後配列 F にある当該の Future のインデックスを idx として返し、あわせて Future の結果を B1,B2,...,Bn として返します。この呼び出しの前には、当該の Future の 'Read' プロパティは false で、呼び出しの後は true になります。

[idx,B1,B2,...,Bn] = fetchNext(F,TIMEOUT) は結果が使用できるようになるまで TIMEOUT で指定されている秒数だけ待機します。タイムアウト時間が経過しても使用可能な結果がない場合、すべての出力引数が空白になります。

F'Read' プロパティが false で Future がない場合は、エラーが通知されます。未読の Future の有無は anyUnread = ~all([F.Read]) を使用して確認できます。

完了した F の要素の実行中にエラーが発生した場合、そのエラーは fetchNext によってスローされます。ただし、その Future の 'Read' プロパティは true に設定され、それより後の fetchNext の呼び出しを実行できるようになります。

いくつかの関数の評価を要求し、進行状況バーを更新しながら完了まで待機します。

N = 100;
for idx = N:-1:1
    % Compute the rank of N magic squares
    F(idx) = parfeval(@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)
この情報は役に立ちましたか?