Python的迭代进度条Tqdm怎么用
本篇内容介绍了“Python的迭代进度条Tqdm怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Tqdm 是一个智能进度表。它能够显示所有可迭代对象当前执行的进度。
你只需要用 tqdm 对可迭代对象进行封装后再遍历即可实现进度条功能,比如说:
from tqdm import tqdm
for i in tqdm(range(10000)):
...
显示效果如下:
76%|████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]
1.准备
请选择以下任一种方式输入命令安装依赖:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install
2.基本使用
tqdm 非常灵活,可以使用多种方式调用。下面给出了两种主要的形式。
2.1 迭代的形式
使用 tqdm() 封装可迭代的对象:
from tqdm import tqdm
from time import sleep
text = ""
for char in tqdm(["a", "b", "c", "d"]):
sleep(0.25)
text = text +
trange(i) 是特殊的关键字,是封装了range的tqdm对象:
from tqdm import trange
for i in trange(100):
sleep(0.01)
通过 set_description 方法,你能控制进度条显示当前步骤的名称:
Processing d: 100%|█████████████████████████████████████████████| 4/4 [00:01<00:00, 3.99it/s]
2.2 手动的形式
除了迭代的形式,你可以手动控制进度,加一个tqdm上下文即可:
with tqdm(total=100) as pbar:
for i in range(10):
sleep(0.1)
pbar.update(10)
上述例子中,pbar 是 tpdm 的“进度”,每一次对 pbar 进行 update 10 都相当于进度加10。
Total 的值即是总进度,这里 total 的值是100,那么pbar加到100的时候进度也就结束了。
你也可以选择不使用上下文的形式调用,但要记得结束后对对象进行关闭操作:
pbar = tqdm(total=100)
for i in range(10):
sleep(0.1)
pbar.update(10)
pbar.close()
3.模块结合
Tqdm 最妙的地方在于能在命令行中结合使用:
$ find . -name '*.py' -type f -exec cat \{} \; |
tqdm --unit loc --unit_scale --total 857366 >> /dev/null
100%|█████████████████████████████████| 857K/857K [00:04<00:00, 246Kloc/s]
只需在管道之间插入tqdm(或python -m tqdm),即可将进度条显示到终端上。
备份大目录:
$ tar -xcf - docs/ | tqdm --bytes --total `du -sb docs/ | cut -f1` \
> backup.tgz
44%|██████████████▊ | 153M/352M [00:14<00:18, 11.0MB/s]
这可以进一步美化:
$ BYTES="$(du -sb docs/ | cut -f1)"
$ tar -cf - docs/ \
| tqdm --bytes --total "$BYTES" --desc Processing | gzip \
| tqdm --bytes --total "$BYTES" --desc Compressed --position 1 \
> ~/backup.tgz
Processing: 100%|██████████████████████| 352M/352M [00:14<00:00, 30.2MB/s]
Compressed: 42%|█████████▎ | 148M/352M [00:14<00:19, 10.9MB/s]
“Python的迭代进度条Tqdm怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341