0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python的迭代进度条 (Tqdm)

汽车电子技术 来源:Python实用宝典 作者:Ckend 2023-02-24 11:12 次阅读

图片

Tqdm 是一个智能进度表。它能够显示所有可迭代对象当前执行的进度。

你只需要用 tqdm 对可迭代对象进行封装后再遍历即可实现进度条功能,比如说:

from tqdm import tqdm
for i in tqdm(range(10000)):
    ...

显示效果如下:

76%|████████████████████████ | 7568/10000 [00:33<00:10, 229.00it/s]

1.准备

开始之前,你要确保Pythonpip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。

请选择以下任一种方式输入命令安装依赖

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install tqdm

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 + char

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 实战教程,请持续关注Python实用宝典。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示
    +关注

    关注

    0

    文章

    408

    浏览量

    44928
  • 对象
    +关注

    关注

    1

    文章

    38

    浏览量

    17291
  • 执行
    +关注

    关注

    0

    文章

    16

    浏览量

    12558
收藏 人收藏

    评论

    相关推荐

    关于进度条

    我用的labview8.6,初学者,在那能找到进度条啊!
    发表于 10-28 11:35

    进度条问题

    如何通过编程的方法改变进度条刻度的最大值?
    发表于 02-20 22:55

    请问怎么用进度条显示程序的进度

    怎么用进度条显示程序的进度
    发表于 12-24 10:02

    labview的进度条

    这是一个labview的进度条程序,比较好用
    发表于 08-04 14:30

    关于运用进度条显示下发过程

    之前搜了一下帖子,学会了通过设置时间来创建一个进度条显示器,那么进度条可以被运用在下发数据的过程中吗,比如我要下发一组很大的数据,大概耗时好几十秒吧,如何将下发的开始至结束这段时间用进度条表示,时间上如何控制?
    发表于 05-30 09:54

    第52章 PROGBAR-进度条控件

    转stemwin教程本期教程讲解STemWin支持的进度条控件。 52. 1 进度条控件介绍 52. 2 官方WIDGET_Multipage实例 52. 3 使用GUIBulder建立多页控件
    发表于 10-18 09:32

    精美的进度条

    本帖最后由 yk74110 于 2019-6-20 11:35 编辑 效果非常漂亮的进度条,稍作修改,子vi可运用于实际项目。
    发表于 12-21 16:18

    进度条改变颜色

    本帖最后由 757061358 于 2017-1-2 20:48 编辑 各位大师,请教一下,进度条如何按照时间+不同的状态,改变对应的颜色呢改变数值,就改变颜色(按照时间)
    发表于 01-02 20:47

    labview进度条

    我用labview2017做了一个文件解压和复制的vi,解压过程中不知道真实的解压进度,怎么才能做一个真实的进度条,要真是的,不是自己规定的,求助!!!
    发表于 04-26 09:10

    labview实现进度条

    进度条
    发表于 03-25 17:06

    怎么设置进度条

    RT!比如 我创建一个随意长度的进度条然后我知道一个文件的大小 当把这个文件里的数据读完后进度条也跟着完毕请问那位弄过?我搞了下随意创建 有问题有事候进度条会超出 边框那么一点点!
    发表于 08-22 04:35

    原版Windows的进度条

    `通过调用.Net接口实现,感觉这个进度条的动画效果还是不错的,在这里分享一下`
    发表于 02-05 14:33

    HarmonyOS实战——ProgressBar进度条组件基本使用

    【鸿蒙专栏,从入门到实战系列】:https://bbs.elecfans.com/user/4697363/posts/1. ProgressBar进度条组件组件说明:常见app中,下载进度条
    发表于 09-22 23:31

    Tqdm:超方便的迭代进度条

    Tqdm 是一个智能进度表。它能够显示所有可迭代对象当前执行的进度。 你只需要用 tqdm 对可迭代
    的头像 发表于 10-21 10:16 264次阅读

    TqdmPython超方便的迭代进度条

    Tqdm 是一个智能进度表。它能够显示所有可迭代对象当前执行的进度。 你只需要用 tqdm 对可迭代
    的头像 发表于 11-01 10:18 307次阅读