Go ui进度条在小型终端上添加更多进度条

Go ui进度条在小型终端上添加更多进度条,go,progress-bar,uiprogressbar,Go,Progress Bar,Uiprogressbar,我正在处理一个场景,在这个场景中,我启动了多个goroutine,每个goroutine都是为完成特定任务而设计的,我希望使用进度条显示每个goroutine的进度 我尝试过使用uiprogress、mpb,但当创建的进度条数量很高时,所有这些进度条都失败了,例如100条 当提供的条数较高时,输出开始重叠,导致每个goroutine显示多个进度条 有谁能帮我找到一种方法,即使goroutine的数量很多,每个goroutine只显示一次进度条 或者除了进度条之外,还有其他方法可以用来显示goro

我正在处理一个场景,在这个场景中,我启动了多个goroutine,每个goroutine都是为完成特定任务而设计的,我希望使用进度条显示每个goroutine的进度

我尝试过使用uiprogress、mpb,但当创建的进度条数量很高时,所有这些进度条都失败了,例如100条

当提供的条数较高时,输出开始重叠,导致每个goroutine显示多个进度条

有谁能帮我找到一种方法,即使goroutine的数量很多,每个goroutine只显示一次进度条

或者除了进度条之外,还有其他方法可以用来显示goroutines中的动态数据吗

在这里添加代码

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