parallel.pool.PollableDataQueue

Класс, который позволяет отправить и опросить относительно данных между клиентом и рабочими

Описание

PollableDataQueue позволяет отправить и опросить относительно данных или сообщений между рабочими и клиентом в параллельном пуле, в то время как расчет выполняется. Можно получить промежуточные значения и прогресс расчета.

Чтобы отправить данные от параллельного рабочего пула назад клиенту, сначала создайте PollableDataQueue в клиенте. Передайте этот PollableDataQueue в parfor- цикл или другое построение языка параллельного программирования, такое как parfeval. От рабочих вызовите send передать данные обратно клиенту. В клиенте используйте poll получать результат сообщения или данных, отправленных от рабочего.

  • Можно вызвать send от процесса, который вызывает конструктора при необходимости.

  • Можно создать очередь на рабочих и передать ее обратно клиенту, чтобы включить коммуникацию в обратном направлении. Однако вы не можете отправить очередь от одного рабочего другому. Используйте spmd, labSend, или 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Отправьте данные от рабочего клиенту, использующему очередь данных

Копировать семантику

Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Создайте PollableDataQueue.

p = parallel.pool.PollableDataQueue;

Запустите parfor- цикл, и отправляет сообщение, такое как данные со значением 1.

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

Опросите относительно результата.

poll(p)
1

Для получения дополнительной информации об опросе для данных с помощью PollableDataQueue, смотрите poll.

Введенный в R2017a