diff --git a/README.md b/README.md index d6edbe4..9b76064 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ #### [Dynamic total](examples/dynTotal/main.go) -![dynamic total](examples/gifs/OaBiIexGNgHLVGQLlieZf6x1x.svg) +![dynamic total](examples/gifs/godEMrCZmJkHYH1X9dN4Nm0U7.svg) #### [Complex example](examples/complex/main.go) diff --git a/examples/dynTotal/main.go b/examples/dynTotal/main.go index cb33a4b..91a05e9 100644 --- a/examples/dynTotal/main.go +++ b/examples/dynTotal/main.go @@ -1,6 +1,7 @@ package main import ( + "io" "math/rand" "time" @@ -15,40 +16,39 @@ func main() { p := mpb.New(mpb.WithWidth(64)) - // initialize bar with dynamic total and initial total guess = 80 - bar := p.AddBar(80, - // indicate that total is dynamic, could be omitted if total set to 0 - mpb.BarDynamicTotal(), - // trigger total auto increment by 1, when 18 % remains till bar completion - mpb.BarAutoIncrTotal(18, 1), - mpb.PrependDecorators(decor.CountersNoUnit("%d / %d")), + bar := p.AddBar(0, // by setting total to 0, we indicate that it's dynamic + mpb.PrependDecorators(decor.Counters(decor.UnitKiB, "% .1f / % .1f")), mpb.AppendDecorators(decor.Percentage()), ) - totalUpd := make(chan int64) - go func() { - for { - total, ok := <-totalUpd - bar.SetTotal(total, !ok) - if !ok { - break - } + var written int64 + maxSleep := 100 * time.Millisecond + read := makeStream(200) + for { + n, err := read() + written += int64(n) + time.Sleep(time.Duration(rand.Intn(10)+1) * maxSleep / 10) + bar.IncrBy(n) + if err == io.EOF { + break } - }() + bar.SetTotal(written+1024, false) + } - max := 100 * time.Millisecond - for i := 0; !bar.Completed(); i++ { - if i == 140 { - totalUpd <- 190 - } - if i == 250 { - totalUpd <- 300 - // final upd, so closing channel - close(totalUpd) - } - time.Sleep(time.Duration(rand.Intn(10)+1) * max / 10) - bar.Increment() - } + // final set total, final=true + bar.SetTotal(written, true) + // need to increment once, to shutdown the bar + bar.IncrBy(0) p.Wait() } + +func makeStream(limit int) func() (int, error) { + return func() (int, error) { + if limit <= 0 { + return 0, io.EOF + } + limit-- + return rand.Intn(1024) + 1, nil + } +} diff --git a/examples/gifs/OaBiIexGNgHLVGQLlieZf6x1x.svg b/examples/gifs/OaBiIexGNgHLVGQLlieZf6x1x.svg deleted file mode 100644 index 6744296..0000000 --- a/examples/gifs/OaBiIexGNgHLVGQLlieZf6x1x.svg +++ /dev/null @@ -1 +0,0 @@ -~/go/src/github.com/vbauerster/mpb/examples/dynTotal~/go/src/github.com/vbauerster/mpb/examples/dynTotalmaster*gorun-racemain.gogorun-racemain.gogorun-racemain.go300/300[==============================================================]100%~/go/src/github.com/vbauerster/mpb/examples/dynTotalmaster*19s~/go/src/github.com/vbauerster/mpb/examples/dynTotalmastergorun-racemain.gogorun-racemain.gogorun-racemain.gogorun-racemain.go1/80[>-------------------------------------------------------------]1%4/80[==>-----------------------------------------------------------]5%6/80[====>---------------------------------------------------------]8%10/80[=======>------------------------------------------------------]13%12/80[========>-----------------------------------------------------]15%13/80[=========>----------------------------------------------------]16%15/80[===========>--------------------------------------------------]19%18/80[=============>------------------------------------------------]23%20/80[===============>----------------------------------------------]25%23/80[=================>--------------------------------------------]29%26/80[===================>------------------------------------------]33%28/80[=====================>----------------------------------------]35%30/80[======================>---------------------------------------]38%32/80[========================>-------------------------------------]40%35/80[==========================>-----------------------------------]44%38/80[============================>---------------------------------]48%40/80[==============================>-------------------------------]50%42/80[================================>-----------------------------]53%43/80[================================>-----------------------------]54%44/80[=================================>----------------------------]55%46/80[===================================>--------------------------]58%48/80[====================================>-------------------------]60%51/80[=======================================>----------------------]64%53/80[========================================>---------------------]66%55/80[==========================================>-------------------]69%58/80[============================================>-----------------]73%60/80[==============================================>---------------]75%61/80[==============================================>---------------]76%64/80[=================================================>------------]80%66/81[==================================================>-----------]81%68/83[==================================================>-----------]82%69/84[==================================================>-----------]82%71/86[==================================================>-----------]83%72/87[==================================================>-----------]83%75/90[===================================================>----------]83%76/91[===================================================>----------]84%79/94[===================================================>----------]84%81/96[===================================================>----------]84%82/97[===================================================>----------]85%84/99[====================================================>---------]85%86/101[====================================================>---------]85%87/102[====================================================>---------]85%90/105[====================================================>---------]86%91/106[====================================================>---------]86%93/108[====================================================>---------]86%96/111[=====================================================>--------]86%99/114[=====================================================>--------]87%102/117[=====================================================>--------]87%103/118[=====================================================>--------]87%106/121[=====================================================>--------]88%107/122[=====================================================>--------]88%109/124[======================================================>-------]88%110/125[======================================================>-------]88%111/126[======================================================>-------]88%113/128[======================================================>-------]88%114/129[======================================================>-------]88%117/132[======================================================>-------]89%119/134[======================================================>-------]89%121/136[======================================================>-------]89%122/137[======================================================>-------]89%124/139[======================================================>-------]89%125/140[======================================================>-------]89%127/142[======================================================>-------]89%130/145[=======================================================>------]90%131/146[=======================================================>------]90%133/148[=======================================================>------]90%136/151[=======================================================>------]90%137/152[=======================================================>------]90%139/154[=======================================================>------]90%140/190[=============================================>----------------]74%142/190[=============================================>----------------]75%143/190[==============================================>---------------]75%146/190[===============================================>--------------]77%148/190[===============================================>--------------]78%151/190[================================================>-------------]79%153/190[=================================================>------------]81%156/192[=================================================>------------]81%158/194[=================================================>------------]81%162/198[==================================================>-----------]82%165/201[==================================================>-----------]82%166/202[==================================================>-----------]82%167/203[==================================================>-----------]82%170/206[==================================================>-----------]83%172/208[==================================================>-----------]83%174/210[==================================================>-----------]83%176/212[==================================================>-----------]83%179/215[===================================================>----------]83%180/216[===================================================>----------]83%182/218[===================================================>----------]83%184/220[===================================================>----------]84%187/223[===================================================>----------]84%188/224[===================================================>----------]84%190/226[===================================================>----------]84%192/228[===================================================>----------]84%193/229[===================================================>----------]84%195/231[===================================================>----------]84%199/235[====================================================>---------]85%200/236[====================================================>---------]85%203/239[====================================================>---------]85%205/241[====================================================>---------]85%207/243[====================================================>---------]85%211/247[====================================================>---------]85%213/249[====================================================>---------]86%217/253[====================================================>---------]86%219/255[====================================================>---------]86%220/256[====================================================>---------]86%222/258[====================================================>---------]86%224/260[====================================================>---------]86%225/261[====================================================>---------]86%227/263[=====================================================>--------]86%229/265[=====================================================>--------]86%233/269[=====================================================>--------]87%234/270[=====================================================>--------]87%236/272[=====================================================>--------]87%238/274[=====================================================>--------]87%241/277[=====================================================>--------]87%243/279[=====================================================>--------]87%246/282[=====================================================>--------]87%247/283[=====================================================>--------]87%248/284[=====================================================>--------]87%250/300[===================================================>----------]83%251/300[===================================================>----------]84%253/300[===================================================>----------]84%255/300[====================================================>---------]85%257/300[====================================================>---------]86%259/300[=====================================================>--------]86%260/300[=====================================================>--------]87%261/300[=====================================================>--------]87%263/300[=====================================================>--------]88%264/300[======================================================>-------]88%266/300[======================================================>-------]89%268/300[======================================================>-------]89%270/300[=======================================================>------]90%273/300[=======================================================>------]91%276/300[========================================================>-----]92%277/300[========================================================>-----]92%281/300[=========================================================>----]94%283/300[=========================================================>----]94%285/300[==========================================================>---]95%290/300[===========================================================>--]97%292/300[===========================================================>--]97%296/300[============================================================>-]99% \ No newline at end of file diff --git a/examples/gifs/godEMrCZmJkHYH1X9dN4Nm0U7.svg b/examples/gifs/godEMrCZmJkHYH1X9dN4Nm0U7.svg new file mode 100644 index 0000000..f794408 --- /dev/null +++ b/examples/gifs/godEMrCZmJkHYH1X9dN4Nm0U7.svg @@ -0,0 +1 @@ +~/go/src/github.com/vbauerster/mpb/examples/dynTotal~/go/src/github.com/vbauerster/mpb/examples/dynTotalmaster*gorun-racemain.gogorun-racemain.gogorun-racemain.go55.7KiB/56.7KiB[============================================================>-]98%100.7KiB/100.7KiB[==============================================================]100%~/go/src/github.com/vbauerster/mpb/examples/dynTotalmaster*13s~/go/src/github.com/vbauerster/mpb/examples/dynTotalmaster~/go/src/github.com/vbauerster/mpb/examples/dynTotalmastergorun-racemain.gogorun-racemain.gogorun-racemain.gogorun-racemain.go519b/1.5KiB[====================>-----------------------------------------]34%2.2KiB/3.2KiB[==========================================>-------------------]69%2.5KiB/3.5KiB[===========================================>------------------]72%3.2KiB/4.2KiB[==============================================>---------------]76%3.6KiB/4.6KiB[================================================>-------------]78%6.5KiB/7.5KiB[=====================================================>--------]87%8.0KiB/9.0KiB[======================================================>-------]89%10.6KiB/11.6KiB[========================================================>-----]91%12.1KiB/13.1KiB[========================================================>-----]92%13.1KiB/14.1KiB[=========================================================>----]93%13.2KiB/14.2KiB[=========================================================>----]93%13.9KiB/14.9KiB[=========================================================>----]93%15.5KiB/16.5KiB[=========================================================>----]94%15.8KiB/16.8KiB[=========================================================>----]94%17.6KiB/18.6KiB[==========================================================>---]95%18.9KiB/19.9KiB[==========================================================>---]95%20.0KiB/21.0KiB[==========================================================>---]95%21.0KiB/22.0KiB[==========================================================>---]95%21.3KiB/22.3KiB[==========================================================>---]96%22.6KiB/23.6KiB[==========================================================>---]96%23.9KiB/24.9KiB[===========================================================>--]96%25.7KiB/26.7KiB[===========================================================>--]96%26.1KiB/27.1KiB[===========================================================>--]96%26.8KiB/27.8KiB[===========================================================>--]96%28.0KiB/29.0KiB[===========================================================>--]97%28.4KiB/29.4KiB[===========================================================>--]97%29.6KiB/30.6KiB[===========================================================>--]97%30.0KiB/31.0KiB[===========================================================>--]97%30.4KiB/31.4KiB[===========================================================>--]97%31.8KiB/32.8KiB[===========================================================>--]97%34.4KiB/35.4KiB[===========================================================>--]97%34.5KiB/35.5KiB[===========================================================>--]97%37.0KiB/38.0KiB[===========================================================>--]97%38.5KiB/39.5KiB[===========================================================>--]97%40.4KiB/41.4KiB[============================================================>-]98%41.1KiB/42.1KiB[============================================================>-]98%42.2KiB/43.2KiB[============================================================>-]98%43.9KiB/44.9KiB[============================================================>-]98%44.9KiB/45.9KiB[============================================================>-]98%46.2KiB/47.2KiB[============================================================>-]98%46.9KiB/47.9KiB[============================================================>-]98%48.4KiB/49.4KiB[============================================================>-]98%48.7KiB/49.7KiB[============================================================>-]98%49.3KiB/50.3KiB[============================================================>-]98%50.1KiB/51.1KiB[============================================================>-]98%50.5KiB/51.5KiB[============================================================>-]98%50.6KiB/51.6KiB[============================================================>-]98%50.8KiB/51.8KiB[============================================================>-]98%51.7KiB/52.7KiB[============================================================>-]98%52.7KiB/53.7KiB[============================================================>-]98%53.6KiB/54.6KiB[============================================================>-]98%57.5KiB/58.5KiB[============================================================>-]98%58.3KiB/59.3KiB[============================================================>-]98%58.7KiB/59.7KiB[============================================================>-]98%60.1KiB/61.1KiB[============================================================>-]98%62.0KiB/63.0KiB[============================================================>-]98%63.7KiB/64.7KiB[============================================================>-]98%64.7KiB/65.7KiB[============================================================>-]98%65.2KiB/66.2KiB[============================================================>-]98%65.8KiB/66.8KiB[============================================================>-]99%66.4KiB/67.4KiB[============================================================>-]99%67.6KiB/68.6KiB[============================================================>-]99%68.5KiB/69.5KiB[============================================================>-]99%70.0KiB/71.0KiB[============================================================>-]99%70.4KiB/71.4KiB[============================================================>-]99%70.8KiB/71.8KiB[============================================================>-]99%72.3KiB/73.3KiB[============================================================>-]99%73.1KiB/74.1KiB[============================================================>-]99%74.4KiB/75.4KiB[============================================================>-]99%75.7KiB/76.7KiB[============================================================>-]99%78.2KiB/79.2KiB[============================================================>-]99%79.3KiB/80.3KiB[============================================================>-]99%80.1KiB/81.1KiB[============================================================>-]99%81.3KiB/82.3KiB[============================================================>-]99%82.3KiB/83.3KiB[============================================================>-]99%82.6KiB/83.6KiB[============================================================>-]99%84.0KiB/85.0KiB[============================================================>-]99%84.7KiB/85.7KiB[============================================================>-]99%85.9KiB/86.9KiB[============================================================>-]99%87.7KiB/88.7KiB[============================================================>-]99%88.8KiB/89.8KiB[============================================================>-]99%90.3KiB/91.3KiB[============================================================>-]99%91.6KiB/92.6KiB[============================================================>-]99%92.8KiB/93.8KiB[============================================================>-]99%93.5KiB/94.5KiB[============================================================>-]99%93.6KiB/94.6KiB[============================================================>-]99%95.1KiB/96.1KiB[============================================================>-]99%96.4KiB/97.4KiB[============================================================>-]99%97.6KiB/98.6KiB[============================================================>-]99%98.8KiB/99.8KiB[============================================================>-]99%99.7KiB/100.7KiB[============================================================>-]99%100.6KiB/101.6KiB[============================================================>-]99%100.7KiB/101.7KiB[============================================================>-]99% \ No newline at end of file