이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
afterEach
및 afterAll
을 사용하여 사용자 인터페이스를 비동기식으로 업데이트하기
이 예제에서는 계산이 완료될 때마다 사용자 인터페이스를 업데이트하는 방법을 보여줍니다. parfeval
을 사용하여 워커에 계산을 분담시키는 경우 워커가 이러한 계산을 수행하는 동안 모든 사용자 인터페이스가 즉각적으로 반응합니다. 이 예제에서는 waitbar
를 사용하여 간단한 사용자 인터페이스를 만듭니다.
각 계산이 완료된 후 사용자 인터페이스를 업데이트하려면
afterEach
를 사용합니다.모든 계산이 완료된 후 사용자 인터페이스를 업데이트하려면
afterAll
을 사용합니다.
waitbar
를 사용하여 Figure 핸들 h
를 만듭니다. afterEach
또는 afterAll
을 사용하면 waitbar
함수가 Figure 핸들을 업데이트합니다. 핸들 객체에 대한 자세한 내용은 핸들 객체 동작 항목을 참조하십시오.
h = waitbar(0,'Waiting...');
parfeval
을 사용하여 확률 행렬의 고유값에서 실수부를 계산합니다. 디폴트 기본 설정을 사용하면 병렬 풀이 아직 생성되지 않은 경우 parfeval
이 자동으로 병렬 풀을 만듭니다.
for idx = 1:100 f(idx) = parfeval(@(n) real(eig(randn(n))),1,5e2); end
afterEach
를 사용하면 parfeval
의 각 계산 결과마다 자동으로 함수를 호출할 수 있습니다. afterEach
를 사용하여 각 Future가 완료된 후 각 출력 배열에서 가장 큰 값을 계산합니다.
maxFuture = afterEach(f,@max,1);
State
속성을 사용하여 Future의 상태를 가져올 수 있습니다. f
에 있는 Future의 State
속성이 "finished"
인 논리형 배열을 만듭니다. mean
을 사용하여 완료된 Future의 소수 값을 계산합니다. 그 다음, 익명 함수 updateWaitbar
를 만듭니다. 이 함수는 h
의 대기 표시줄의 길이 소수 값을 완료된 Future의 소수 값으로 변경합니다.
updateWaitbar = @(~) waitbar(mean({f.State} == "finished"),h);
afterEach
및 updateWaitbar
를 사용하여 maxFuture
의 각 Future가 완료된 후 대기 표시줄의 길이 소수 값을 업데이트합니다. afterAll
및 delete
를 사용하여 모든 계산이 완료된 후 대기 표시줄을 닫습니다.
updateWaitbarFutures = afterEach(f,updateWaitbar,0); afterAll(updateWaitbarFutures,@(~) delete(h),0);
afterAll
및 histogram
을 사용하여 모든 Future가 완료된 후 maxFuture
의 결과를 히스토그램으로 표시합니다.
showsHistogramFuture = afterAll(maxFuture,@histogram,0);