用tqdm和rich为固定路径和目标的python算法代码实现进度条

适用场景

在存在固定长度的算法中可以可视化算法执行的过程,比如对一个固定长度的数组的遍历,就是一种适合使用进度条来进行可视化的场景。而一些条件循环,比如while循环,不一定适合使用进度条来对算法执行过程进行可视化,典型的一个场景就是自洽的优化算法。

tqdm进度条的使用方法与效果

调用的方法也非常的容易,只需要将我们常用的range函数替换成tqdm中自带的trange即可。

# test_tqdm.py
from tqdm import trange
import time
for i in trange(10):
    time.sleep(1)

以下是运行中间过程的一个显示场景

[dechin@dechin-manjaro progressbar]$ python3 test_tqdm.py 
 40%|████████████████                        | 4/10 [00:04<00:06,  1.00s/it]

通过多次引用trange,还可以实现多个进度条打印的功能,但是这里如果第一层的数量较多,会导致屏幕输出过于复杂:

# test_tqdm.py
from tqdm import trange
import time
for i in trange(10):
    for j in trange(10):
        time.sleep(0.1)

以下是执行过程中的输出:

[dechin@dechin-20n2s01200 progressbar]$ python3 test_tqdm.py 
100%|███████████████████████████████████████| 10/10 [00:01<00:00,  9.88it/s]
100%|███████████████████████████████████████| 10/10 [00:01<00:00,  9.88it/s]
100%|███████████████████████████████████████| 10/10 [00:01<00:00,  9.88it/s]
 30%|████████████                            | 3/10 [00:03<00:07,  1.01s/it]

rich进度条的使用方法与效果

使用的方法与tqdm有些类似的,也是直接调用rich中的trackrange函数进行封装:

# test_rich.py
from rich.progress import track
import time
for i in track(range(15)):
    time.sleep(1)

与简单的tqdm不同的是,rich支持种类众多的色彩,下面粘贴的执行过程显示,其实是带有彩色的:

[dechin@dechin-manjaro progressbar]$ python3 test_rich.py 
Working... ━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  27% 0:00:12

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/progress-bar.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/

posted @ 2021-01-21 20:07  DECHIN  阅读(1700)  评论(0编辑  收藏  举报