Go ui进度条在小型终端上添加更多进度条
我正在处理一个场景,在这个场景中,我启动了多个goroutine,每个goroutine都是为完成特定任务而设计的,我希望使用进度条显示每个goroutine的进度 我尝试过使用uiprogress、mpb,但当创建的进度条数量很高时,所有这些进度条都失败了,例如100条 当提供的条数较高时,输出开始重叠,导致每个goroutine显示多个进度条 有谁能帮我找到一种方法,即使goroutine的数量很多,每个goroutine只显示一次进度条 或者除了进度条之外,还有其他方法可以用来显示goroutines中的动态数据吗 在这里添加代码Go ui进度条在小型终端上添加更多进度条,go,progress-bar,uiprogressbar,Go,Progress Bar,Uiprogressbar,我正在处理一个场景,在这个场景中,我启动了多个goroutine,每个goroutine都是为完成特定任务而设计的,我希望使用进度条显示每个goroutine的进度 我尝试过使用uiprogress、mpb,但当创建的进度条数量很高时,所有这些进度条都失败了,例如100条 当提供的条数较高时,输出开始重叠,导致每个goroutine显示多个进度条 有谁能帮我找到一种方法,即使goroutine的数量很多,每个goroutine只显示一次进度条 或者除了进度条之外,还有其他方法可以用来显示goro
func main() {
fmt.Println("apps: deployment started: app1, app2")
uiprogress.Start()
var wg sync.WaitGroup
wg.Add(100)
for i := 1; i <= 100; i++ {
bar := uiprogress.AddBar(100).AppendCompleted().PrependElapsed()
go func(appName string, progressBar *uiprogress.Bar) {
defer wg.Done()
deploy(appName, progressBar)
}(fmt.Sprintf("app%d", i), bar)
}
wg.Wait()
uiprogress.Stop()
fmt.Println("apps: successfully deployed: app1, app2")
}
func deploy(app string, bar *uiprogress.Bar) {
var lastStatus string
status := make(chan string)
bar.Width = 50
// prepend the deploy step to the bar
bar.PrependFunc(func(b *uiprogress.Bar) string {
statusValue := <-status
if len(statusValue) == 0 {
return fmt.Sprintf("%s, Deployment Status = %s completed", app, lastStatus)
}
lastStatus = statusValue
return fmt.Sprintf("%s, Last Status = %#v Deployment Status = %s", app, lastStatus, statusValue)
})
defer func() {
bar.Set(bar.Total)
close(status)
}()
bar.Incr()
status <- "pending"
for retry := 1; retry <= 100; retry++ {
bar.Incr()
time.Sleep(time.Second * 1)
if retry%10 == 0 {
return
}
status <- fmt.Sprintf("ongoing %d", retry)
}
}
func main(){
fmt.Println(“应用程序:部署已开始:应用程序1、应用程序2”)
uiprogress.Start()
var wg sync.WaitGroup
工作组.增补(100)
对于i:=1;i