gpt4 book ai didi

rust - 如何不将进度条数据与其他输出混合?

转载 作者:行者123 更新时间:2023-11-29 08:31:13 25 4
gpt4 key购买 nike

我用进度条堆了一点。

这是一个示例程序:

use indicatif::*;
use std::{sync::mpsc, sync::mpsc::*, thread};

pub enum Output {
Finish,
Tick,
}

fn main() {
let (tx, rx) = mpsc::channel::<Output>();

let join_handle = thread::spawn(move || {
handle_output_messages(100_000, rx);
});

(0..100_000).for_each(|_| tx.send(Output::Tick).unwrap());

tx.send(Output::Finish).unwrap();

join_handle.join().unwrap();
}

pub fn handle_output_messages(total_things: u64, rx: Receiver<Output>) {
let multi_bar = MultiProgress::new();
let progress_bar = multi_bar.add(ProgressBar::new(total_things));

thread::spawn(move || {
for output in rx {
match output {
Output::Tick => progress_bar.inc(1),
Output::Finish => {
progress_bar.finish();
(0..600).for_each(|x| println!("{:?}", x));
}
}
}
});

multi_bar.join_and_clear().unwrap();
}

如果您尝试运行它,您会看到进度条消息将与迭代数字混合在一起。这对我不利,但我不知道如何解决此问题。

也许有人可以帮助我?

最佳答案

使用带有进度条的标准 println! 是行不通的,因为它们会互相覆盖。相反,使用 ProgressBar::println , 它会在进度条上方打印消息而不覆盖它。

关于rust - 如何不将进度条数据与其他输出混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57241021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com