16 个不稳定版本 (6 个重大更改)
0.7.0 | 2024年4月2日 |
---|---|
0.6.0 | 2023年10月19日 |
0.5.2 | 2023年8月26日 |
0.5.1 | 2023年7月27日 |
0.3.1 | 2022年2月25日 |
#99 in 命令行界面
每月下载量 20,986
在 7 crates 中使用
265KB
460 行代码
tqdm
立即让你的循环显示智能进度条 - 只需用 tqdm(iterable) 包装任何可迭代对象,然后你就完成了!
Rust 对 Python 命令行进度条工具 tqdm 的实现。名字 "tqdm" 来自阿拉伯语单词 taqaddum (تقدّم),意为 "进步",也是西班牙语中 "我爱你如此之多"(te quiero demasiado)的缩写。
快速入门
简单地将 tqdm::tqdm()
包装在任意的 可迭代对象 上
use tqdm::tqdm;
for i in tqdm(0..10000) {
/* Your loop logic here */
}
此函数返回一个包装迭代器,当调用 next
时,它会推进进度条。通过使用 自动引用 特性来绕过原始可迭代对象的方法,以便无需开销地调用它们。
76%|███████████████▉ | 7618/10000 [00:09<00:03, 782.14it/s]
用法
可以就地配置样式和其他参数
use tqdm::Style;
for i in tqdm(0..100)
.style(Style::Balloon)
.desc(Some("some description")) {
/* Your loop logic here */
}
47%|**********. | 4792/10000 [00:06<00:06, 783.39it/s]
通过将 tqdm::Iter
特性公开来允许方法链式调用
use tqdm::Iter;
for i in (0..).take(10000).tqdm() {
/* Your loop logic here */
}
或者,使用 tqdm::pbar()
创建进度条并手动更新它
use tqdm::pbar;
let mut pbar = pbar(Some(44850));
for i in 0..300 {
pbar.update(i).unwrap();
/* Your loop logic here */
}
高级用法
也支持多进度条!Tqdm 使用全局注册表来处理多个进度条
use tqdm::tqdm;
for t in (0..3) {
std::thread::spawn(move || {
for i in tqdm(0..).desc(Some(i)) {
/* Your loop logic here */
}
})
}
38%|##########0 | 77/200 [00:00<00:01, 83.24it/s]
77%|████████████████████ | 77/100 [00:00<00:00, 83.24it/s]
19%|*****. | 77/400 [00:00<00:03, 83.24it/s]
可以使用 tqdm::tqdm_async()
跟踪异步迭代器项(可能需要异步运行时,如 tokio)
use tqdm::tqdm_async;
#[tokio::main]
async fn main() {
use tokio::time::{sleep, Duration};
let future_iter = (0..100).map(|i| sleep(Duration::from_secs_f64(i as f64 / 100.0)));
futures::future::join_all(tqdm_async(future_iter)).await;
}
有关更多用法,请参阅 文档。
许可证
依赖项
~1.6–9.5MB
~75K SLoC