ドキュメンテーション

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

parallel.pool.PollableDataQueue

クライアントとワーカーの間でデータの送信およびポーリングを可能にするクラス

説明

parallel.pool.PollableDataQueue は、計算の実行中に並列プール内のワーカーとクライアント間で、データまたはメッセージの送信とポーリングを行うことを可能にします。計算の中間値と進行状況を取得できます。

並列プールのワーカーからクライアントにデータを送り返すには、まずクライアント内に PollableDataQueue を作成します。この PollableDataQueue を、parfor ループ、または parfeval などの他の並列言語構成に渡します。ワーカーから send を呼び出して、データをクライアントに送り返します。クライアントで poll を使用して、ワーカーから送信されたメッセージまたはデータの結果を取得します。

  • 必要に応じて、コンストラクターを呼び出すプロセスから send を呼び出すことができます。

  • ワーカー上にキューを作成し、そのキューをクライアントに送り返すことにより、逆方向の通信を有効にできます。ただし、ワーカーから別のワーカーにキューを送信することはできません。代わりに spmdlabSend または labReceive を使用してください。

  • その他すべてのハンドル オブジェクトとは異なり、PollableDataQueue インスタンスはワーカーに送信されても接続されたままとなります。

作成

p = parallel.pool.PollableDataQueue

PollableDataQueue のコンストラクターは引数を取らず、さまざまなワーカーからのメッセージ (またはデータ) の送信またはポーリングに使用できるオブジェクトを返します。データを受信するプロセス内でのみ、コンストラクターを呼び出します。通常のワークフローでは、ワーカーはコンストラクターを呼び出してはならず、代わりに既存の PollableDataQueue インスタンスを渡されなければなりません。

プロパティ

すべて折りたたむ

キューからの削除待ちのデータ アイテム数を示す読み取り専用プロパティ。

例:

pollableQ = parallel.pool.PollableDataQueue;
% No messages in queue because nothing has been sent yet.
pollableQ.QueueLength
ans =

     0
pollableQ.send('A message')
% Now QueueLength = 1 because one message is sent and not yet polled.
pollableQ.QueueLength
ans =

     1
msg = pollableQ.poll();
disp(msg)
A message
pollableQ.QueueLength
% Now QueueLength = 0 because there are no more pending messages.
ans =

     0

メソッド

parallel.pool.PollableDataQueue オブジェクトには次のメソッドがあります。

poll ワーカーから送信されたデータの取得
sendデータ キューを使用したクライアントからワーカーへのデータの送信
sendSend data from worker to client using a data queue

コピーのセマンティクス

ハンドル。コピー操作に対するハンドル クラスの影響については、オブジェクトのコピー (MATLAB)を参照してください。

すべて折りたたむ

PollableDataQueue を作成します。

p = parallel.pool.PollableDataQueue;

parfor ループを開始し、値 1 を持つデータなどのメッセージを送信します。

parfor i = 1
    send(p, i); 
end

結果をポーリングします。

poll(p)
1

PollableDataQueue によるデータのポーリングの詳細については、poll を参照してください。

R2017a で導入