主要内容

parallel.pool.PollableDataQueue

在客户端和工作者之间发送和轮询数据

    描述

    PollableDataQueue在并行池中,当执行计算时,支持同步发送和轮询工作人员和客户端之间的数据或消息。你可以得到中间值和计算进度。

    要将数据从并行池工作器发送回客户机,首先构造一个PollableDataQueue在客户端。通过这个PollableDataQueue成一个parfor-loop或其他并行语言结构,例如parfeval.工人打来电话发送将数据发送回客户端。在客户端,使用民意调查检索从工作人员处发送的消息或数据的结果。

    • 你可以叫发送从创建PollableDataQueue(如果需要的话)。

    • 您可以在工作人员上构造队列,并将其发送回客户机,以启用反向通信。但是,不能将队列从一个工作人员发送到另一个工作人员。使用spmdlabSend,或labReceive代替。

    • 与其他句柄对象不同,PollableDataQueueDataQueue实例在被发送给worker时仍然保持连接。

    创建

    描述

    例子

    p= parallel.pool.PollableDataQueue创建一个对象,该对象可用于从不同的工作人员发送和轮询消息(或数据)。创建PollableDataQueue在您希望接收数据的工作人员或客户端上。

    属性

    全部展开

    此属性是只读的。

    等待从队列中删除的数据项的数量,指定为零或正整数。这个值是0或在工作人员或客户端上创建PollableDataQueue实例。如果客户端创建PollableDataQueue实例,值为0在所有的工人。如果一个工人创建PollableDataQueue,其值为0在客户端和所有其他工作人员上。

    对象的功能

    民意调查 检索从工作人员发送的数据
    发送 使用数据队列从工作人员发送数据到客户端

    例子

    全部折叠

    构造一个PollableDataQueue

    p = parallel.pool.PollableDataQueue;

    开始一个parfor-loop,并发送消息,例如值为1的数据。

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

    投票决定结果。

    调查(p)
    1

    使用。查询数据的详细信息PollableDataQueue,请参阅民意调查

    当你给一个PollableDataQueue对象时,消息将在队列中等待。每个消息增加了1到队列长度。当你使用民意调查,则从队列中收集一条消息。在本例中,使用QueueLength求a的长度PollableDataQueue对象。

    当客户端或工作人员创建PollableDataQueue对象时,发送到队列的任何消息都保存在该客户端或工作人员的内存中。如果客户端创建DataQueue对象,QueueLength财产归所有工人所有0.在本例中,您创建了一个PollableDataQueue对象,并从工作者发送数据。

    首先,使用一个worker创建一个并行池。

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

    创建一个PollableDataQueue

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

    一个新创建的PollableDataQueue有一个空队列。您可以使用parfor找到pdq。QueueLength在工人。在客户机上查找队列长度,在worker上查找队列长度。

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

    由于队列是空的,因此QueueLength0对于客户端和工作人员。接下来,向队列发送一条消息。然后,使用QueueLength属性查找队列的长度。

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

    QueueLength属性是1在客户端,和0在工人。使用民意调查从队列中检索消息。

    味精=调查(pdq);disp(味精)
    一个消息

    使用QueueLength属性查找队列的长度。

    流(在客户端:%i\npdq.QueueLength)
    客户端:0

    QueueLength0因为队列处理已经完成。

    介绍了R2017a