Codebase list golang-github-vbauerster-mpb / 1790d8e
Update examples Vladimir Bauer 9 years ago
7 changed file(s) with 137 addition(s) and 187 deletion(s). Raw diff Collapse all Expand all
4040 ),
4141 )
4242 go func() {
43 defer func() {
44 // fmt.Printf("%s done\n", name)
45 wg.Done()
46 }()
43 defer wg.Done()
4744 blockSize := rand.Intn(maxBlockSize) + 1
4845 for i := 0; i < total; i++ {
4946 select {
66 "time"
77
88 "github.com/vbauerster/mpb"
9 "github.com/vbauerster/mpb/decor"
910 )
1011
1112 const (
1415
1516 func main() {
1617
18 p := mpb.New(mpb.WithWidth(64))
19
20 total := 100
21 numBars := 3
1722 var wg sync.WaitGroup
18 p := mpb.New().SetWidth(64)
23 wg.Add(numBars)
1924
20 name1 := "Bar#1:"
21 bar1 := p.AddBar(50).
22 PrependName(name1, 0, mpb.DwidthSync|mpb.DidentRight).
23 PrependElapsed(3, mpb.DwidthSync|mpb.DextraSpace).
24 AppendPercentage(5, 0)
25
26 wg.Add(1)
27 go func() {
28 defer wg.Done()
29 blockSize := rand.Intn(maxBlockSize) + 1
30 for i := 0; i < 50; i++ {
31 sleep(blockSize)
32 bar1.Incr(1)
33 blockSize = rand.Intn(maxBlockSize) + 1
25 for i := 0; i < numBars; i++ {
26 var name string
27 if i != 1 {
28 name = fmt.Sprintf("Bar#%d:", i)
3429 }
35 }()
36
37 bar2 := p.AddBar(100).
38 PrependName("", 0, mpb.DwidthSync).
39 PrependElapsed(3, mpb.DwidthSync|mpb.DextraSpace).
40 AppendPercentage(5, 0)
41
42 wg.Add(1)
43 go func() {
44 defer wg.Done()
45 blockSize := rand.Intn(maxBlockSize) + 1
46 for i := 0; i < 100; i++ {
47 sleep(blockSize)
48 bar2.Incr(1)
49 blockSize = rand.Intn(maxBlockSize) + 1
50 }
51 }()
52
53 bar3 := p.AddBar(80).
54 PrependName("Bar#3:", 0, mpb.DwidthSync|mpb.DidentRight).
55 PrependElapsed(3, mpb.DwidthSync|mpb.DextraSpace).
56 AppendPercentage(5, 0)
57
58 wg.Add(1)
59 go func() {
60 defer wg.Done()
61 blockSize := rand.Intn(maxBlockSize) + 1
62 for i := 0; i < 80; i++ {
63 sleep(blockSize)
64 bar3.Incr(1)
65 blockSize = rand.Intn(maxBlockSize) + 1
66 }
67 }()
30 b := p.AddBar(int64(total),
31 mpb.PrependDecorators(
32 decor.Name(name, 0, decor.DwidthSync|decor.DidentRight),
33 decor.Elapsed(3, decor.DSyncSpace),
34 ),
35 mpb.AppendDecorators(
36 decor.Percentage(5, 0),
37 ),
38 )
39 go func() {
40 defer wg.Done()
41 blockSize := rand.Intn(maxBlockSize) + 1
42 for i := 0; i < total; i++ {
43 sleep(blockSize)
44 b.Incr(1)
45 blockSize = rand.Intn(maxBlockSize) + 1
46 }
47 }()
48 }
6849
6950 wg.Wait()
7051 p.Stop()
71 // p.AddBar(1) // panic: you cannot reuse p, create new one!
7252 fmt.Println("stop")
7353 }
7454
66 "time"
77
88 "github.com/vbauerster/mpb"
9 "github.com/vbauerster/mpb/decor"
910 )
1011
1112 const (
1415
1516 func main() {
1617
18 p := mpb.New(mpb.WithWidth(64))
19
20 total := 100
21 numBars := 3
1722 var wg sync.WaitGroup
18 p := mpb.New().SetWidth(64)
23 wg.Add(numBars)
1924
20 name1 := "Bar#1:"
21 bar1 := p.AddBar(50).
22 PrependName(name1, 0, mpb.DwidthSync|mpb.DidentRight).
23 PrependETA(4, mpb.DwidthSync|mpb.DextraSpace).
24 AppendPercentage(5, 0)
25 wg.Add(1)
26 go func() {
27 defer wg.Done()
28 blockSize := rand.Intn(maxBlockSize) + 1
29 for i := 0; i < 50; i++ {
30 sleep(blockSize)
31 bar1.Incr(1)
32 blockSize = rand.Intn(maxBlockSize) + 1
25 for i := 0; i < numBars; i++ {
26 var name string
27 if i != 1 {
28 name = fmt.Sprintf("Bar#%d:", i)
3329 }
34 }()
35
36 bar2 := p.AddBar(100).
37 PrependName("", 0, mpb.DwidthSync).
38 PrependETA(4, mpb.DwidthSync|mpb.DextraSpace).
39 AppendPercentage(5, 0)
40 wg.Add(1)
41 go func() {
42 defer wg.Done()
43 blockSize := rand.Intn(maxBlockSize) + 1
44 for i := 0; i < 100; i++ {
45 sleep(blockSize)
46 bar2.Incr(1)
47 stat := bar2.GetStatistics()
48 if stat.Current > 42 && p.RemoveBar(bar2) {
49 break
30 b := p.AddBar(int64(total), mpb.BarID(i),
31 mpb.PrependDecorators(
32 decor.Name(name, 0, decor.DwidthSync|decor.DidentRight),
33 decor.ETA(4, decor.DSyncSpace),
34 ),
35 mpb.AppendDecorators(
36 decor.Percentage(5, 0),
37 ),
38 )
39 go func() {
40 defer wg.Done()
41 blockSize := rand.Intn(maxBlockSize) + 1
42 for i := 0; i < total; i++ {
43 sleep(blockSize)
44 b.Incr(1)
45 blockSize = rand.Intn(maxBlockSize) + 1
46 if b.ID() == 1 && i >= 42 {
47 p.RemoveBar(b)
48 return
49 }
5050 }
51 blockSize = rand.Intn(maxBlockSize) + 1
52 }
53 }()
54
55 bar3 := p.AddBar(80).
56 PrependName("Bar#3:", 0, mpb.DwidthSync|mpb.DidentRight).
57 PrependETA(4, mpb.DwidthSync|mpb.DextraSpace).
58 AppendPercentage(5, 0)
59 wg.Add(1)
60 go func() {
61 defer wg.Done()
62 blockSize := rand.Intn(maxBlockSize) + 1
63 for i := 0; i < 80; i++ {
64 sleep(blockSize)
65 bar3.Incr(1)
66 blockSize = rand.Intn(maxBlockSize) + 1
67 }
68 }()
51 }()
52 }
6953
7054 wg.Wait()
7155 p.Stop()
72 // p.AddBar(2) // panic: you cannot reuse p, create new one!
7356 fmt.Println("stop")
7457 }
7558
66 "time"
77
88 "github.com/vbauerster/mpb"
9 "github.com/vbauerster/mpb/decor"
910 )
1011
1112 func main() {
13 p := mpb.New()
14 total := 100
15 numBars := 3
1216 var wg sync.WaitGroup
13 p := mpb.New()
14 wg.Add(3) // add wg delta
15 for i := 0; i < 3; i++ {
17 wg.Add(numBars)
18
19 for i := 0; i < numBars; i++ {
1620 name := fmt.Sprintf("Bar#%d:", i)
17 bar := p.AddBar(100).
18 PrependName(name, len(name), 0).
19 // Prepend Percentage decorator and sync width
20 PrependPercentage(3, mpb.DwidthSync|mpb.DextraSpace).
21 // Append ETA and don't sync width
22 AppendETA(2, 0)
21 bar := p.AddBar(int64(total),
22 mpb.PrependDecorators(
23 // Name decorator with minWidth and no width sync
24 decor.Name(name, len(name), 0),
25 // Percentage decorator with DwidthSync and DextraSpace
26 decor.Percentage(3, decor.DSyncSpace),
27 ),
28 mpb.AppendDecorators(
29 // ETA decorator, with no width sync
30 decor.ETA(2, 0),
31 ),
32 )
33
2334 go func() {
2435 defer wg.Done()
25 // you can p.AddBar() here, but ordering will be non deterministic
26 // if you still need p.AddBar() here and maintain ordering, use
27 // (*mpb.Progress).BeforeRenderFunc(f mpb.BeforeRender)
28 for i := 0; i < 100; i++ {
36 for i := 0; i < total; i++ {
2937 time.Sleep(time.Duration(rand.Intn(100)) * time.Millisecond)
3038 bar.Incr(1)
3139 }
55 "time"
66
77 "github.com/vbauerster/mpb"
8 "github.com/vbauerster/mpb/decor"
89 )
910
1011 func main() {
11 // Star mpb's rendering goroutine.
12 p := mpb.New()
13 // Set custom width for every bar, which mpb will render
14 // The default one in 80
15 p.SetWidth(100)
16 // Set custom format for every bar, the default one is "[=>-]"
17 p.Format("╢▌▌░╟")
18 // Set custom refresh rate, the default one is 100 ms
19 p.RefreshRate(120 * time.Millisecond)
12 p := mpb.New(
13 // Override default (80) width
14 mpb.WithWidth(100),
15 // Override default "[=>-]" format
16 mpb.WithFormat("╢▌▌░╟"),
17 // Override default 100ms refresh rate
18 mpb.WithRefreshRate(120*time.Millisecond),
19 )
2020
2121 // Add a bar. You're not limited to just one bar, add many if you need.
22 bar := p.AddBar(100).PrependName("Single Bar:", 0, 0).AppendPercentage(5, 0)
22 bar := p.AddBar(100,
23 mpb.PrependDecorators(decor.Name("Single Bar:", 0, 0)),
24 mpb.AppendDecorators(decor.Percentage(5, 0)),
25 )
2326
2427 for i := 0; i < 100; i++ {
2528 bar.Incr(1) // increment progress bar
77 "time"
88
99 "github.com/vbauerster/mpb"
10 "github.com/vbauerster/mpb/decor"
1011 )
1112
1213 const (
1819 func (bs barSlice) Len() int { return len(bs) }
1920
2021 func (bs barSlice) Less(i, j int) bool {
21 is := bs[i].GetStatistics()
22 js := bs[j].GetStatistics()
23 ip := percentage(is.Total, is.Current, 100)
24 jp := percentage(js.Total, js.Current, 100)
22 ip := decor.CalcPercentage(bs[i].Total(), bs[i].Current(), 100)
23 jp := decor.CalcPercentage(bs[j].Total(), bs[j].Current(), 100)
2524 return ip < jp
2625 }
2726
3332 }
3433 }
3534
36 func percentage(total, current int64, ratio int) int {
37 if total == 0 || current > total {
38 return 0
39 }
40 return int(float64(ratio) * float64(current) / float64(total))
41 }
42
4335 func main() {
4436
37 p := mpb.New(mpb.WithWidth(64), mpb.WithBeforeRenderFunc(sortByProgressFunc()))
38
39 total := 100
40 numBars := 3
4541 var wg sync.WaitGroup
46 p := mpb.New().SetWidth(60).BeforeRenderFunc(sortByProgressFunc())
42 wg.Add(numBars)
4743
48 name1 := "Bar#1:"
49 bar1 := p.AddBar(100).
50 PrependName(name1, 0, mpb.DwidthSync).
51 PrependCounters("%3s/%3s", 0, 10, mpb.DwidthSync|mpb.DextraSpace).
52 AppendETA(3, 0)
53 wg.Add(1)
54 go func() {
55 defer wg.Done()
56 blockSize := rand.Intn(maxBlockSize) + 1
57 for i := 0; i < 100; i++ {
58 sleep(blockSize)
59 bar1.Incr(1)
60 blockSize = rand.Intn(maxBlockSize) + 1
44 for i := 0; i < numBars; i++ {
45 var name string
46 if i != 1 {
47 name = fmt.Sprintf("Bar#%d:", i)
6148 }
62 }()
63
64 bar2 := p.AddBar(60).
65 PrependName("", 0, mpb.DwidthSync).
66 PrependCounters("%3s/%3s", 0, 10, mpb.DwidthSync|mpb.DextraSpace).
67 AppendETA(3, 0)
68 wg.Add(1)
69 go func() {
70 defer wg.Done()
71 blockSize := rand.Intn(maxBlockSize) + 1
72 for i := 0; i < 60; i++ {
73 sleep(blockSize)
74 bar2.Incr(1)
75 blockSize = rand.Intn(maxBlockSize) + 1
76 }
77 }()
78
79 bar3 := p.AddBar(80).
80 PrependName("Bar#3:", 0, mpb.DwidthSync).
81 PrependCounters("%3s/%3s", 0, 10, mpb.DwidthSync|mpb.DextraSpace).
82 AppendETA(3, 0)
83 wg.Add(1)
84 go func() {
85 defer wg.Done()
86 blockSize := rand.Intn(maxBlockSize) + 1
87 for i := 0; i < 80; i++ {
88 sleep(blockSize)
89 bar3.Incr(1)
90 blockSize = rand.Intn(maxBlockSize) + 1
91 }
92 }()
49 b := p.AddBar(int64(total),
50 mpb.PrependDecorators(
51 decor.Name(name, 0, decor.DwidthSync),
52 decor.Counters("%3s/%3s", 0, 10, decor.DSyncSpace),
53 ),
54 mpb.AppendDecorators(
55 decor.ETA(3, 0),
56 ),
57 )
58 go func() {
59 defer wg.Done()
60 blockSize := rand.Intn(maxBlockSize) + 1
61 for i := 0; i < total; i++ {
62 sleep(blockSize)
63 b.Incr(1)
64 blockSize = rand.Intn(maxBlockSize) + 1
65 }
66 }()
67 }
9368
9469 wg.Wait()
9570 p.Stop()
96 // p.AddBar(1) // panic: you cannot reuse p, create new one!
9771 fmt.Println("stop")
9872 }
9973
66 "time"
77
88 "github.com/vbauerster/mpb"
9 "github.com/vbauerster/mpb/decor"
910 )
1011
1112 const (
2223 for i := 0; i < totalBars; i++ {
2324 name := fmt.Sprintf("Bar#%02d: ", i)
2425 total := rand.Intn(120) + 10
25 bar := p.AddBar(int64(total)).
26 PrependName(name, len(name), 0).
27 PrependETA(4, mpb.DwidthSync|mpb.DextraSpace).
28 AppendPercentage(5, 0)
26 bar := p.AddBar(int64(total),
27 mpb.PrependDecorators(
28 decor.Name(name, len(name), 0),
29 decor.ETA(4, decor.DSyncSpace),
30 ),
31 mpb.AppendDecorators(
32 decor.Percentage(5, 0),
33 ),
34 )
2935
3036 go func() {
3137 defer wg.Done()
4046
4147 wg.Wait()
4248 p.Stop()
43 // p.AddBar(1) // panic: you cannot reuse p, create new one!
4449 fmt.Println("stop")
4550 }
4651