Temat: Przydatne - pasek postępu dla długotrwałych obliczeń

Może komuś się przyda :)

Kiedy czekałem ponad 4 godziny na ukończenie pewnych obliczeń, nie wiedząc, ile one jeszcze potrwają, zapragnąłem mieć pasek postępu, który pozwalałby się zorientować, czy lepiej iść spać, bo potrwają one pewnie do rana, czy to kwestia minut. Niby oczywiste, a jakoś wcześniej nie przyszło do głowy, choć to tylko kilka linijek kodu.

http://ryouready.wordpress.com/2009/03/16/r-monitor-fu...
http://ryouready.wordpress.com/2010/01/11/progress-bar...

Ogólnie rzecz biorąc:
total <- 20

#pasek tekstowy
# pb <- txtProgressBar(min = 0, max = total, style = 3)

#pasek tcl/tk; wymaga library(tcltk)
#pb <- tkProgressBar(title = "progress bar", min = 0, max = total, width = 300)

# pasek bazujący na kontrolce Windowsa
winProgressBar(title = "progress bar", min = 0, max = total, width = 300)

for(i in 1:total){

# brudna robota

setWinProgressBar(pb, i, title=paste( round((i/total)*100, 0), "% done"))
}

close(pb)


Jeśli ma się kilka zagnieżdżonych pętli, z których zewnętrzna "kręci się" najwolniej, zaś wewnętrzne wykonują tysiące iteracji, update paska należy dać właśnie do tej wywoływanej najrzadziej, żeby sobie dodatkowo nie dodać kolejnych kilku godzin czekania, spowalniając obliczenia.


Obrazek
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: Przydatne - pasek postępu dla długotrwałych obliczeń

ja używam bardziej prymitywnej metody, do liczenia postępu, kiedyś chcialem użyć paska postępu i któregoś pakietu R'a, ale notorycznie zacinał się przy pełnym obciążeniu pamięci

ale w przypadku pętli mój prymitywny licznik wygląda następująco :


ile=1000
for(i in 1:ile){
plot(1,1,main=paste(i,"z",ile,"iteracji"))
}


;)

proste i przydatne bo czasami można coś przydatnego przy okazji wyświetlić, najlepiej co którąś iterację :


ile=1000
for(i in 1:ile){
if(i%%10==0)plot(1,1,main=paste(i,"z",ile,"iteracji"))
}



Wyślij zaproszenie do