文档

民意调查

检索从工人发送的数据

语法

调查(pollablequeue)
[data, OK] = poll(pollablequeue, timeout)

描述

调查(pollablequeue)检索工作人员发送到的消息或数据的结果parallel.pool.PollableDataQueue指定的pollablequeue。只能在创建数据队列的流程中使用轮询。

例子

(数据,好吧) =调查(pollablequeue,超时)返回数据,好吧表示返回数据的布尔值为true。如果队列中没有数据,则返回一个空数组,其中布尔值为false好吧。指定超时秒作为可选的第二个参数。在这种情况下,方法可能阻塞指定的时间超时返回之前。如果在此期间有任何数据到达队列,则返回该数据。

例子

全部折叠

构造一个PollableDataQueue

p = parallel.pool.PollableDataQueue;
开始一个parfor循环,并发送一条消息,比如值为1的数据。
parfor发送(p, i);结束
投票结果。

调查(p)
1

有关使用a发送数据的详细信息PollableDataQueue,请参阅发送

这个示例展示了如何从worker返回中间结果给客户机,以及如何在客户机上显示结果。

构造一个PollableDataQueue。一个PollableDataQueue在异步函数评估期间发送和轮询数据最有用的是parfevalparfevalOnAll

q = parallel.pool.PollableDataQueue;
启动计时器并将数据队列作为输入发送给函数parfeval在池中执行。显示经过的时间和返回的数据。

f = parfeval(@workerFcn, 0, q);msgsReceived = 0;开始时间=抽搐;msgsReceived < 2 [data, gotMsg] = poll(q, 1);如果gotMsg流('有消息:%s在%之后。3 g秒\ n”,...数据,toc(开始时间));msgsReceived = msgsReceived + 1;其他的流('在%没有可用的消息。3 g秒\ n”,...toc(开始时间));结束结束函数workerFcn (q)发送(q,“开始”);暂停(3);发送(问,“停止”);结束
收到消息:0.39秒后开始没有消息,1.48秒后没有消息,2.56秒后停止收到消息,3.35秒后停止

第一个消息在执行后的0.39秒内返回parfeval。在此期间,数据和功能parfeval已序列化,发送给工人,反序列化和设置运行。当您启动代码时,worker发送一些序列化的数据,通过网络发送回客户机,并放入数据队列。民意调查注意此操作并将值返回给客户端函数。之后的时间parfeval已调用的显示。注意当工人正在计算一些东西时(在本例中是长时间的暂停)有3秒的延迟。

输入参数

全部折叠

可轮询数据队列,指定为parallel.pool.PollableDataQueue对象。

例子:= poll(pollablequeue, optionalTimeout);

用于阻塞的可选超时间隔(秒)民意调查在返回之前,指定为标量。

例子:= poll(pollablequeue, timeout);

输出参数

全部折叠

从工作者到数据队列的消息或数据,指定为任何可序列化的值。

例子:= poll(pollablequeue, timeout);

检查是否以布尔值返回数据。如果数据已经返回,则好吧是否赋值一个布尔值真正的。如果队列中没有数据pollablequeue,然后返回一个空数组和一个布尔值好吧

例子:= poll(pollablequeue, timeout);

介绍了R2017a

这个话题有用吗?