wait

Ждите Simulink.Simulation.Job объект для изменения состояния

Описание

пример

wait(simJob) блокирует выполнение в сеансе клиента до тех пор, пока задание не будет идентифицировано объектом simJob достигает 'finished'состояние или сбой. Это происходит, когда все симуляции заканчивают выполнение на рабочих.

wait(simJob,'stateOfJob') блокирует выполнение в сеансе клиента, пока заданный объект задания не изменит состояние на значение 'state'. Допустимые состояния, которые нужно дождаться, 'queuedrunning', и' finished'. Если объект находится в данный момент или уже находился в указанном состоянии, wait не выполняется, и выполнение возвращается немедленно. Для примера, если вы выполняете wait(simJob,'queued') для задания, уже находящегося в 'finished'состояние, вызов возвращается немедленно.

wait(simJob,'stateOfJob',timeout) блокирует выполнение, пока либо задание не достигнет заданного 'state', или истекает тайм-аут секунд, в зависимости от того, что произойдет раньше.

Примеры

свернуть все

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

1. Откройте модель.

open_system('sldemo_househeat');

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

setPointValues = 65:2:85;
spv_Length = length(setPointValues);

3. Использование setPointValues, инициализируйте массив Simulink.SimulationInput объекты.

in(1:spv_Length) = Simulink.SimulationInput('sldemo_househeat');
for i = 1:1:spv_Length 
    in(i) = in(i).setBlockParameter('sldemo_househeat/Set Point',...
        'Value',num2str(setPointValues(i)));
end

4. Укажите размер пула для количества работников, которые будут использоваться. В сложение к количеству работников, используемых для запуска параллельных симуляций, требуется главный рабочий. В этом случае предположим, что для запуска пакетного задания для параллельных симуляций доступны три работника. Объект задания возвращает полезные метаданные, как показано на рисунке. Можно использовать задание ID чтобы получить доступ к объекту задания позже с любой машины. NumWorkers отображает, сколько рабочих выполняет симуляции - количество рабочих, заданное в 'Pool' аргумент плюс дополнительный головной рабочий.

simJob = batchsim(in,'Pool',3)
                  ID: 1
                Type: pool
          NumWorkers: 4
            Username: #####
               State: running
      SubmitDateTime: ##-###-#### ##:##:##
       StartDateTime: 
    Running Duration: 0 days 0h 0m 0s

5. Теперь дождитесь завершения задания перед извлечением выходов.

wait(simJob)

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

свернуть все

A Simulink.Simulation.Job объект. Как создать simJob, запуск batchsim.

Пример: simJob = batchsim(in,'Pool','5')

Значение State свойство Simulink.Simulation.Job объект, который нужно дождаться.

Пример: wait(simJob,'queued')

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

Пример: wait(simJob, 5)

Введенный в R2018b