afterEach и afterAllВ этом примере показано, как обновить пользовательский интерфейс по мере завершения расчетов. Когда вы разгружаете расчеты рабочим, использующим parfevalвсе пользовательские интерфейсы являются быстрыми, в то время как работники выполняют эти расчеты. В этом примере вы используете waitbar для создания простого пользовательского интерфейса.
Использование afterEach обновлять пользовательский интерфейс после завершения каждого расчета.
Использование afterAll обновить пользовательский интерфейс после завершения расчетов.
Использование waitbar чтобы создать указатель на рисунок, h. Когда вы используете afterEach или afterAll, а waitbar функция обновляет указатель на рисунок. Для получения дополнительной информации об указателе объектов смотрите Указатель Объекта Behavior.
h = waitbar(0,'Waiting...');
Использование parfeval вычислить вещественную часть собственных значений случайных матриц. С настройками по умолчанию parfeval автоматически создает параллельный пул, если он еще не создан.
for idx = 1:100 f(idx) = parfeval(@(n) real(eig(randn(n))),1,5e2); end
Можно использовать afterEach для автоматического вызова функций на каждом из результатов parfeval расчеты. Использование afterEach вычислять самое большое значение в каждом из выходных массивов после завершения каждого будущего.
maxFuture = afterEach(f,@max,1);
Можно использовать State свойство для получения статуса фьючерса. Создайте логический массив, где State свойство фьючерсов в f является "finished". Использование mean вычислить долю готовых фьючерсов. Затем создайте анонимную функцию updateWaitbar. Функция изменяет дробную длину полосы ожидания h к части готовых фьючерсов.
updateWaitbar = @(~) waitbar(mean({f.State} == "finished"),h);Использование afterEach и updateWaitbar чтобы обновить дробную длину полосы ожидания после каждого будущего в maxFuture завершает. Использование afterAll и delete чтобы закрыть панель ожидания после завершения всех расчетов.
updateWaitbarFutures = afterEach(f,updateWaitbar,0); afterAll(updateWaitbarFutures,@(~) delete(h),0);
Использование afterAll и histogram чтобы показать гистограмму результатов в maxFuture после завершения всех фьючерсов.
showsHistogramFuture = afterAll(maxFuture,@histogram,0);
