Future

Функция запланировала запускаться

Описание

Future объект представляет функцию, которую вы планируете запускать в MATLAB®.

  • Если вы используете parfeval или parfevalOnAll создать Future, MATLAB запускает функцию:

    • В фоновом режиме, если вы задаете backgroundPool при создании Future.

    • На параллельном пуле, если вы не задаете backgroundPool при создании Future, имейте Parallel Computing Toolbox™, и одно из следующего применяется:

      • У вас есть параллельный пул, в настоящее время открываются.

      • Вам включили автоматическое создание пула.

    • В сериале, в противном случае.

  • Если вы используете afterEach или afterAll создать Future, функция запущена вашим текущим сеансом работы с MATLAB. Это не запущено в фоновом режиме или ни на каком параллельном пуле.

Создание

Вы создаете Future возразите, когда вы выполните одно из следующих действий:

  • Использование parfeval запланировать функцию, чтобы запуститься в фоновом режиме, на параллельном пуле, или в сериале.

  • Использование parfevalOnAll запланировать функцию, чтобы работать на всех рабочих в пуле, или в сериале.

  • Использование afterEach или afterAll запланировать функцию, чтобы выполняться после Future конец объектов.

Доступные типы будущих объектов следуют.

Будущий объектОписание
FevalFutureСозданный parfeval
FevalOnAllFutureСозданный parfevalOnAll
AfterEachFutureСозданный afterAll
AfterAllFutureСозданный afterEach

Свойства

развернуть все

Общие опции

Это свойство доступно только для чтения.

Дата и время, когда Future объект был создан в виде datetime скаляр.

Это свойство доступно только для чтения.

Информация об ошибке в виде MException скалярный или массив ячеек MException объекты.

  • Если вы создаете Future объектное использование afterEach, это свойство является массивом ячеек.

  • Если вы создаете Future объектное использование parfevalOnAll, это свойство является массивом ячеек или MException скаляр.

  • В противном случае этим свойством является MException скаляр или пустой MException массив.

Для получения дополнительной информации об ошибках, с которыми сталкиваются, когда вы планируете функцию, чтобы выполняться после Future конец объектов, смотрите afterEach и afterAll.

Это свойство доступно только для чтения.

Дата и время, когда функция, законченная в виде datetime скаляр.

Future выполнение концов, когда MATLAB закончил запускать функцию, сопоставленную с ним.

Если функция сопоставлена с Future объект не закончен, запустившись, этим свойством является пустой datetime массив.

Типы данных: datetime

Это свойство доступно только для чтения.

Функция сопоставлена с Future объект в виде указателя на функцию.

  • Если вы создаете Future использование parfeval или parfevalOnAll, MATLAB запускает функцию в фоновом режиме на параллельном пуле (если у вас есть Parallel Computing Toolbox), или в сериале.

  • Если вы создаете Future использование afterEach или afterAll, функция запущена вашим текущим сеансом работы с MATLAB. Это не запущено в фоновом режиме или ни на каком параллельном пуле.

Пример: @magic

Типы данных: function_handle

Это свойство доступно только для чтения.

Идентификатор в виде целочисленного скаляра.

Типы данных: double

Это свойство доступно только для чтения.

Входные параметры для функции в виде массива ячеек.

Когда запланированный функциональный fcn заданный Function запуски свойства, это запускается как fcn(X{:}), где X массив ячеек входных параметров, заданных этим свойством.

Пример 1

Пример: {[1,2], [2,1]}

Типы данных: cell

Это свойство доступно только для чтения.

Количество аргументов, возвращенных функцией в виде целочисленного скаляра.

Функция задана Function свойство должно возвратить, по крайней мере, столько же аргументов, сколько задано этим свойством.

Типы данных: double

Это свойство доступно только для чтения.

Выходные аргументы от выполнения функции в виде массива ячеек.

Это свойство является массивом пустой ячейки если Future объект не закончен, запустившись или Future объект завершается с ошибкой.

Пример: {[3.14]}

Типы данных: cell

Текущая длительность Future объект в виде duration скаляр.

Когда Future возразите закончил запускаться, это свойство становится постоянным.

Это свойство доступно только для чтения.

Дата и время, когда Future объект начал запускаться в виде datetime скаляр.

Future начинает запускаться, когда MATLAB начинает запускать функцию, сопоставленную с ним.

Типы данных: datetime

Это свойство доступно только для чтения.

Текущее состояние будущего в виде одного из этих значений:

  • 'queued'Future ставится в очередь, и функция, сопоставленная с ним, как планируют, запустится.

  • 'running' — Функция сопоставлена с Future в настоящее время запускается.

  • 'finished' или 'failed' — Функция сопоставлена с Future закончен, запустившись.

  • 'unavailable'Future не может запуститься. Элементы предварительно выделенного Future массив имеет это состояние.

FevalFuture Опции

Это свойство доступно только для чтения.

Вывод текста в виде вектора символов.

Это свойство является вектором символов, содержащим весь текст, который отображен, если вы явным образом запускаете функции, заданные Function свойство с помощью входных параметров задано InputArguments свойство.

Это свойство доступно только для чтения.

Очередь Future объекты в виде parallel.FevalQueue объект.

Это свойство равно очереди Future объекты даны FevalQueue из пула, на котором работает будущее.

Это свойство не доступно для Future объекты, которые запускают функции в основанной на потоке среде.

Это свойство доступно только для чтения.

Отметьте указание, если выходные параметры были считаны в виде true или false.

Это свойство установлено в true только если вы используете fetchOutputs или fetchNext.

Типы данных: логический

FevalOnAllFuture Опции

Это свойство доступно только для чтения.

Записанный текст в виде массива ячеек из символьных векторов.

Это свойство является массивом ячеек, содержащим весь текст, который отображен, если вы явным образом запускаете функции, заданные Function свойство с помощью входных параметров задано InputArguments свойство.

Jth элементом массива является вывод текста, полученный от jth рабочий в пуле, который запустил Future.

Типы данных: cell

Это свойство доступно только для чтения.

Очередь Future объекты в виде parallel.FevalQueue объект.

Это свойство равно очереди Future объекты даны FevalQueue из пула, на котором работает будущее.

Это свойство не доступно для Future объекты, которые запускают функции в основанной на потоке среде.

Функции объекта

развернуть все

afterAllЗапустите функцию после того, как все функции закончат запускаться в фоновом режиме
afterEachЗапустите функцию после того, как каждая функция закончит запускаться в фоновом режиме
cancelОстановите функцию, запускающуюся в фоновом режиме
fetchOutputsПолучите результаты функции, запускающейся в фоновом режиме
waitОжидайте фьючерсов, чтобы завершиться
fetchNextПолучите затем непрочитанные выходные параметры из Future массив

Примеры

свернуть все

В этом примере показано, как использовать afterEach запланировать функцию обратного вызова, чтобы выполняться после функции закончило запускаться в фоновом режиме.

Используйте parfeval запускать функциональный rand(1) и получите тот выход. Задайте backgroundPool в качестве первого аргумента, который запустит функцию в фоновом режиме. Повторитесь 10 раз, чтобы создать 10 Future объекты.

for i = 1:10
    f(i) = parfeval(backgroundPool,@rand, 1, 1);
end

После каждого Future концы, отобразите значение с помощью disp функция. Входные параметры для disp выходные аргументы от каждого Future. Задайте третий аргумент к afterEach функционируйте как 0 не возвращать выходные параметры коллбэка.

afterEach(f,@disp,0);

В этом примере показано, как использовать afterEach обновить панель ожидания с прогрессом функций, запускающихся в фоновом режиме.

Создайте панель ожидания, w.

w = waitbar(0,'Please wait ...');

Определите номер итераций для вашего for- цикл, N. Сохраните текущее количество завершенных итераций, 0, и общее количество итераций, N, в UserData свойство панели ожидания.

N = 20;
w.UserData = [0 Н];

Запустите for- цикл с N итерации. В каждой итерации используйте parfeval и backgroundPool запускать pause в фоновом режиме для случайного числа секунд. Сохраните каждый Future объект в массиве.

for i = 1:N
    delay = rand;
    f(i) = parfeval(backgroundPool,@pause,0,delay);
end

Используйте функцию помощника updateWaitbar обновить waitbar после каждого Future концы.

afterEach(f,@(~)updateWaitbar(w),0);

Используйте delete закрыть панель ожидания после всего Future конец объектов.

afterAll(f,@(~)delete(w),0);

Задайте функцию помощника

Задайте функцию помощника updateWaitbar. Функция постепенно увеличивает первый элемент UserData свойство, затем использует вектор, чтобы вычислить прогресс.

function updateWaitbar(w)
    % Update a waitbar using the UserData property.

    % Check if the waitbar is a reference to a deleted object
    if isvalid(w)
        % Increment the number of completed iterations 
        w.UserData(1) = w.UserData(1) + 1;

        % Calculate the progress
        progress = w.UserData(1) / w.UserData(2);

        % Update the waitbar
        waitbar(progress,w);
    end
end

В этом примере показано, как остановить функцию MATLAB, которую вы запускаете в фоновом режиме. Когда вы используете parfeval чтобы запустить функцию в фоновом режиме, MATLAB сразу возвращает Future объект. Продолжительные функции могут блокировать другие функции от выполнения в фоновом режиме. Чтобы мешать функции запуститься, необходимо использовать cancel функция вместо того, чтобы выбор Live Editor> Run> Stop.

Используйте parfeval запускать pause(Inf) не получая выходных параметров. Задайте backgroundPool в качестве первого аргумента, который запустит функцию в фоновом режиме. Когда вы используете parfeval, вы создаете Future объект.

f = parfeval(backgroundPool,@pause,0,Inf);

Проверяйте состояние Future объект.

f.State
ans = 
'running'

Когда вы запускаете parfeval, вы планируете функцию, чтобы запуститься в фоновом режиме. Когда фоновый пул имеет недостаточные ресурсы, чтобы запустить функцию, Future находится в 'queued' состояние. Когда функция запущена фоновым пулом, Future находится в 'running' состояние.

Чтобы мешать функции запуститься в фоновом режиме, отмените Future объект.

cancel(f)
f.State
ans = 
'finished'

Функция находится теперь в 'finished' состояние.

Советы

  • Future объекты являются локальными объектами и могут быть получены доступ только в сеансе работы с MATLAB, который создал их.

    Например, если вы используете parfeval запустить функцию в фоновом режиме и создать Future объект, Future не доступно в рабочей области второстепенных рабочих.

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

(Parallel Computing Toolbox) | (Parallel Computing Toolbox) | (Parallel Computing Toolbox) | |

Введенный в R2013b