fetchNext

Получите затем непрочитанные выходные параметры из Future массив

    Описание

    пример

    [idx,Y1,...,Ym] = fetchNext(F) получает линейный индекс idx из следующего непрочитанного Future объект в массиве F это закончено, и m результаты, что Future как Y1,...,Ym.

    Можно только использовать fetchNext с Future объекты вы создаете использование parfeval.

    • Future является непрочитанным если его Read свойством является false. Если F не имеет никаких непрочитанных элементов, MATLAB® выдает ошибку.

    • Future закончен если его State свойством является 'finished'. Если никакие непрочитанные элементы не находятся в 'finished' состояние, MATLAB сначала ожидает элемента F закончиться.

    fetchNext элементы чтений от F в порядке завершения. После fetchNext получает выходные параметры из следующего непрочитанного Future объект в массиве F, MATLAB устанавливает Read свойство того Future к true.

    Если fetchNext читает элемент из F это сталкивается с ошибкой, функция сначала устанавливает Read свойство Future элемент к истине. То, fetchNext выдает ошибку.

    [idx,Y1,...,Ym] = fetchNext(F,timeout) ожидает максимума timeout секунды для результата в F стать доступным.

    Если никакой элемент Future массив F является непрочитанным после timeout секунды протекают, idx и все другие выходные аргументы пусты.

    Примеры

    свернуть все

    Запускайте функцию несколько раз, пока удовлетворительный результат не будет найден. В этом случае, массив фьючерсов f отменяется, когда результат больше 0.95.

    N = 100;
    for idx = N:-1:1
        f(idx) = parfeval(backgroundPool,@rand,1); % Create a random scalar
    end
    result = NaN; % No result yet
    for idx = 1:N
        [~, thisResult] = fetchNext(f);
        if thisResult > 0.95
            result = thisResult;
            % Have all the results needed, so break
            break;
        end
    end
    % With required result, cancel any remaining futures
    cancel(F)
    result

    Запросите несколько вычислений функции и обновите индикатор выполнения при ожидании завершения.

    N = 100;
    for idx = N:-1:1
        % Compute the rank of N magic squares
        F(idx) = parfeval(backgroundPool,@rank,1,magic(idx));
    end % Build a waitbar to track progress
    h = waitbar(0,'Waiting for FevalFutures to complete...');
    results = zeros(1,N);
    for idx = 1:N
        [completedIdx,thisResult] = fetchNext(F);
        % Store the result
        results(completedIdx) = thisResult;
        % Update waitbar
        waitbar(idx/N,h,sprintf('Latest result: %d',thisResult));
    end
    delete(h)

    Входные параметры

    свернуть все

    Введите Future объект в виде parallel.FevalFuture скаляр или массив.

    Можно только использовать fetchNext с Future объекты вы создаете использование parfeval.

    Пример: F = parfeval(backgroundPool,@magic,1,3);

    Секунды, чтобы ожидать в виде действительного числового скаляра.

    Пример: timeout = 5;

    Пример: timeout = single(3.14);

    Выходные аргументы

    свернуть все

    Индекс Future массив, возвращенный как целочисленный скаляр.

    Выходные аргументы от будущего. Тип выходных параметров зависит от функции, сопоставленной с элементом F с индексом idx.

    Элемент F с индексом idx должен возвратить m выходные аргументы. Проверять сколько выходных аргументов Future имеет, используйте NumOutputArguments свойство.

    Смотрите также

    |