parallel.pool. PollableDataQueue

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

Описание

parallel.pool.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 имеет следующие методы.

опрос Получите данные, отправленные от рабочего
отправкаОтправьте данные от рабочего клиенту, использующему очередь данных

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

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

Примеры

свернуть все

Создайте PollableDataQueue.

p = parallel.pool.PollableDataQueue;

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

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

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

poll(p)
1

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

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте