vbauerster / Mpb
Licence: unlicense
multi progress bar for Go cli applications
Stars: ✭ 1,221
Programming Languages
go
31211 projects - #10 most used programming language
Projects that are alternatives of or similar to Mpb
Alive Progress
A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!
Stars: ✭ 2,940 (+140.79%)
Mutual labels: cli, terminal, progress-bar, spinner
Spinner
Go (golang) package with 90 configurable terminal spinner/progress indicators.
Stars: ✭ 1,637 (+34.07%)
Mutual labels: cli, terminal, spinner, progress-bar
Progress bar
Command-line progress bars and spinners for Elixir.
Stars: ✭ 281 (-76.99%)
Mutual labels: cli, terminal, progress-bar, spinner
Python Progressbar
Progressbar 2 - A progress bar for Python 2 and Python 3 - "pip install progressbar2"
Stars: ✭ 682 (-44.14%)
Mutual labels: cli, terminal, progress-bar
Ruby Progressbar
Ruby/ProgressBar is a text progress bar library for Ruby.
Stars: ✭ 1,378 (+12.86%)
Mutual labels: cli, terminal, progress-bar
Php Console Spinner
Colorful highly configurable spinner for php cli applications (suitable for async apps)
Stars: ✭ 225 (-81.57%)
Mutual labels: cli, terminal, spinner
Tqdm
A Fast, Extensible Progress Bar for Python and CLI
Stars: ✭ 20,632 (+1589.76%)
Mutual labels: cli, terminal, progress-bar
Yaspin
A lightweight terminal spinner for Python with safe pipes and redirects 🎁
Stars: ✭ 413 (-66.18%)
Mutual labels: cli, terminal, spinner
Spinnercpp
Simple header only library to add a spinner / progress indicator to any terminal application.
Stars: ✭ 37 (-96.97%)
Mutual labels: cli, terminal, spinner
Taskline
Tasks, boards & notes for the command-line habitat
Stars: ✭ 78 (-93.61%)
Mutual labels: cli, terminal
Fsq
A tool for querying the file system with a SQL-like language.
Stars: ✭ 60 (-95.09%)
Mutual labels: cli, terminal
Sub Tv Cli
Downloading your series subtitles via terminal 📺
Stars: ✭ 63 (-94.84%)
Mutual labels: cli, terminal
Tty Prompt
A beautiful and powerful interactive command line prompt
Stars: ✭ 1,210 (-0.9%)
Mutual labels: cli, terminal
Http Prompt
An interactive command-line HTTP and API testing client built on top of HTTPie featuring autocomplete, syntax highlighting, and more. https://twitter.com/httpie
Stars: ✭ 8,329 (+582.15%)
Mutual labels: cli, terminal
Spotify Tui
Spotify for the terminal written in Rust 🚀
Stars: ✭ 11,061 (+805.9%)
Mutual labels: cli, terminal
Reminders Cli
Command-line interface to interact with the Reminders.app
Stars: ✭ 67 (-94.51%)
Mutual labels: cli, terminal
Cross Platform Node Guide
📗 How to write cross-platform Node.js code
Stars: ✭ 1,161 (-4.91%)
Mutual labels: cli, terminal
Nord Konsole
An arctic, north-bluish clean and elegant Konsole color scheme.
Stars: ✭ 56 (-95.41%)
Mutual labels: cli, terminal
Multi Progress Bar
mpb is a Go lib for rendering progress bars in terminal applications.
Features
- Multiple Bars: Multiple progress bars are supported
- Dynamic Total: Set total while bar is running
- Dynamic Add/Remove: Dynamically add or remove bars
- Cancellation: Cancel whole rendering process
- Predefined Decorators: Elapsed time, ewma based ETA, Percentage, Bytes counter
- Decorator's width sync: Synchronized decorator's width among multiple bars
Usage
Rendering single bar
package main
import (
"math/rand"
"time"
"github.com/vbauerster/mpb/v6"
"github.com/vbauerster/mpb/v6/decor"
)
func main() {
// initialize progress container, with custom width
p := mpb.New(mpb.WithWidth(64))
total := 100
name := "Single Bar:"
// adding a single bar, which will inherit container's width
bar := p.Add(int64(total),
// progress bar filler with customized style
mpb.NewBarFiller("╢▌▌░╟"),
mpb.PrependDecorators(
// display our name with one space on the right
decor.Name(name, decor.WC{W: len(name) + 1, C: decor.DidentRight}),
// replace ETA decorator with "done" message, OnComplete event
decor.OnComplete(
decor.AverageETA(decor.ET_STYLE_GO, decor.WC{W: 4}), "done",
),
),
mpb.AppendDecorators(decor.Percentage()),
)
// simulating some work
max := 100 * time.Millisecond
for i := 0; i < total; i++ {
time.Sleep(time.Duration(rand.Intn(10)+1) * max / 10)
bar.Increment()
}
// wait for our bar to complete and flush
p.Wait()
}
Rendering multiple bars
var wg sync.WaitGroup
// pass &wg (optional), so p will wait for it eventually
p := mpb.New(mpb.WithWaitGroup(&wg))
total, numBars := 100, 3
wg.Add(numBars)
for i := 0; i < numBars; i++ {
name := fmt.Sprintf("Bar#%d:", i)
bar := p.AddBar(int64(total),
mpb.PrependDecorators(
// simple name decorator
decor.Name(name),
// decor.DSyncWidth bit enables column width synchronization
decor.Percentage(decor.WCSyncSpace),
),
mpb.AppendDecorators(
// replace ETA decorator with "done" message, OnComplete event
decor.OnComplete(
// ETA decorator with ewma age of 60
decor.EwmaETA(decor.ET_STYLE_GO, 60), "done",
),
),
)
// simulating some work
go func() {
defer wg.Done()
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
max := 100 * time.Millisecond
for i := 0; i < total; i++ {
// start variable is solely for EWMA calculation
// EWMA's unit of measure is an iteration's duration
start := time.Now()
time.Sleep(time.Duration(rng.Intn(10)+1) * max / 10)
bar.Increment()
// we need to call DecoratorEwmaUpdate to fulfill ewma decorator's contract
bar.DecoratorEwmaUpdate(time.Since(start))
}
}()
}
// Waiting for passed &wg and for all bars to complete and flush
p.Wait()
Dynamic total
Complex example
Bytes counters
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].