主要内容

parallel.pool.PollableDataQueue

クラアントとワカの間でのデタの送信とポリング

    説明

    PollableDataQueueにより,計算の実行中に並列プール内のワーカーとクライアント間でデータまたはメッセージを非同期で送信およびポーリングできます。計算の中間値と進行状況を取得できます。

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

    • 必要に応じて,PollableDataQueueを作成するワカまたはクラアントから发送を呼び出すことができます。

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

    • その他すべてのハンドルオブジェクトとは異なり,PollableDataQueueンスタンスとDataQueue

    作成

    説明

    p= parallel.pool.PollableDataQueueは,さまざまなワーカーからのメッセージ(またはデータ)の送信およびポーリングに使用できるオブジェクトを作成します。デ,タを受信するワ,カ,またはクラ,PollableDataQueueを作成します。

    プロパティ

    すべて展開する

    このプロパティは読み取り専用です。

    キュからの削除待のデタアテム数。0または正の整数として指定します。値は0か,またはPollableDataQueue。クラ@ @アントがPollableDataQueueインスタンスを作成する場合,値はすべてのワーカー上で0です。いずれかのワ,カ,がPollableDataQueueを作成する場合,値はクラアント上およびその他すべてのワカ上で0です。

    オブジェクト関数

    民意调查 ワ,カ,から送信されたデ,タの取得
    发送 デタキュを使用したクラアントからワカへのデタの送信

    すべて折りたたむ

    PollableDataQueueを作成します。

    p = parallel.pool.PollableDataQueue;

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

    parforI = 1 send(p, I);结束

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

    调查(p)
    1

    PollableDataQueueによるデタのポリングの詳細にいては,民意调查を参照してください。

    PollableDataQueueオブジェクトにメッセ,ジを送信すると,メッセ,ジはキュ,で待機します。メッセ,ジごとに,キュ,の長さに1が加算されます。民意调查を使用すると,1。この例では,QueueLengthプロパティを使用してPollableDataQueueオブジェクトの長さを求めます。

    いずれかのクラアントまたはワカがPollableDataQueueオブジェクトを作成すると,キューに送信されたすべてのメッセージはそのクライアントまたはワーカーのメモリに保持されます。クラ@ @アントがDataQueueオブジェクトを作成する場合,すべてのワ,カ,上のQueueLengthプロパティは0です。この例ではクライアント上にPollableDataQueueオブジェクトを作成し,ワ,カ,からデ,タを送信します。

    parpool (1);
    使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数:1)。

    PollableDataQueueを作成します。

    pdq = parallel.pool.PollableDataQueue
    pdq = PollableDataQueue,属性:QueueLength: 0

    新規に作成されたPollableDataQueueには空のキュ,があります。parforを使用して,ワ,カ,上のpdq。QueueLengthを求めることができます。クラ。

    流('在客户端:%i\n'pdq.QueueLength)
    客户端:0
    parforI = 1 fprintf(工人:%i\npdq.QueueLength)结束
    工人:0

    キュは空であるため,クラアントとワカの両方でQueueLength0です。次に,メッセ,ジをキュ,に送信します。続いて,QueueLengthプロパティを使用してキュ,の長さを求めます。

    先发消息parforI = 1 send(pdq,“消息”);结束计算长度流('在客户端:%i\n'pdq.QueueLength)
    客户端:1 .单击“确定”
    parforI = 1 fprintf(工人:%i\npdq.QueueLength)结束
    工人:0

    QueueLengthプロパティはクラ@ @アントで1であり,ワ,カ,で0です。民意调查を使用して,キュ,からメッセ,ジを取得します。

    MSG = poll(pdq);disp(味精)
    一个消息

    QueueLengthプロパティを使用して,キュ,の長さを求めます。

    流('在客户端:%i\n'pdq.QueueLength)
    客户端:0

    キュ,の処理が完了しているため,QueueLength0です。

    バ,ジョン履歴

    R2017aで導入