主要内容

民意调查

检索从工作人员发送的数据

描述

例子

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

例子

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

例子

全部折叠

构造一个PollableDataQueue

p = parallel.pool.PollableDataQueue;
开始一个parfor-loop,并发送消息,例如值为1的数据。
parforI = 1 send(p, I);结束
投票选举结果。

调查(p)
1

要了解关于使用PollableDataQueue,请参阅邮寄

这个示例演示了如何将中间结果从worker返回到客户机,并在客户机上显示结果。

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

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

f = parfeval(@workerFcn, 0, q);msgsReceived = 0;开始时间=抽搐;msgsReceived<2[数据,gotMsg]=轮询(q,1);如果gotMsg流('得到消息:%s在%后面。3 g秒\ n”...数据,toc(开始时间));msgreceived = msgreceived + 1;其他的流('在%.3g秒时没有可用消息\n'...toc(开始时间));结束结束函数workerFcn (q)发送(q,“开始”); 暂停(3);发送(q,“停止”);结束
Got message: start after 0.39 seconds No message available at 1.48 seconds No message available at 2.56 seconds Got message: stop after 3.35 seconds

第一个消息在执行后的0.39秒内返回parfeval.在此期间,数据和功能parfeval已经被序列化,发送给工人,反序列化,并设置运行。当您开始编写代码时,工作程序将一些序列化的数据通过网络发送回客户机并放入数据队列中。民意调查注意此操作并将值返回给客户端函数。从那以后所花的时间parfeval显示已调用的。请注意,当工作人员正在计算某些内容时,延迟为3秒(在本例中为长时间暂停)。

输入参数

全部折叠

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

例子:[data, OK] = poll(pollablequeue, optionalTimeout);

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

例子:[data, OK] = poll(pollablequeue, timeout);

输出参数

全部折叠

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

例子:[data, OK] = poll(pollablequeue, timeout);

检查数据是否已返回,返回值为布尔值。如果数据已经返回,那么好啊指定了布尔值真正的.如果队列中没有数据可轮询队列,然后返回一个空数组和一个布尔值好啊

例子:[data, OK] = poll(pollablequeue, timeout);

介绍了R2017a