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);