文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python 动态进度条实现

2024-11-29 20:09

关注

1. 使用 print 函数

最简单的方式是直接使用print函数来更新进度条的状态。

示例代码 1:

import time
def progress_bar(n, total, bar_length=20):
    percent = float(n) / total
    arrow = '-' * int(round(percent * bar_length) - 1) + '>'
    spaces = ' ' * (bar_length - len(arrow))
    print(f'Progress: [{arrow}{spaces}] {int(round(percent * 100))}%', end='\r')
total = 50
for i in range(total):
    time.sleep(0.1)  # 模拟耗时操作
    progress_bar(i + 1, total)
print()  # 打印换行

输出结果:

Progress: [--------------------->] 100%

2. 使用 tqdm 库

tqdm 是一个非常流行的进度条库,它能够轻松地为循环添加进度条。

示例代码 2:

from tqdm import tqdm
import time
total = 50
for i in tqdm(range(total), desc="Processing"):
    time.sleep(0.1)  # 模拟耗时操作

输出结果:

Processing: 100%|██████████| 50/50 [00:05<00:00,  9.82it/s]

3. 自定义样式

tqdm 支持自定义样式,比如颜色和字符。

示例代码 3:

from tqdm import tqdm
import time
total = 50
for i in tqdm(range(total), desc="Processing", bar_format="{desc}: {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}{postfix}]"):
    time.sleep(0.1)  # 模拟耗时操作

输出结果:

Processing: 50/50 [00:05<00:00,  9.82it/s]

4. 多进度条

有时候我们需要同时跟踪多个进度条。

示例代码 4:

from tqdm import tqdm
import time
with tqdm(total=100, desc="First") as pbar1, tqdm(total=100, desc="Second") as pbar2:
    for i in range(100):
        time.sleep(0.05)
        pbar1.update(1)
        pbar2.update(1)

输出结果:

First: 100%|██████████| 100/100 [00:05<00:00, 19.31it/s]
Second: 100%|██████████| 100/100 [00:05<00:00, 19.31it/s]

5. 嵌套进度条

当你的任务是分层结构时,嵌套进度条会很有用。

示例代码 5:

from tqdm import tqdm
import time
outer = tqdm(total=100, desc="Outer Loop")
for i in outer:
    inner = tqdm(total=100, desc="Inner Loop", leave=False)
    for j in inner:
        time.sleep(0.01)
        inner.update(1)
    outer.update(1)
    inner.close()
outer.close()

输出结果:

Outer Loop: 100%|██████████| 100/100 [00:10<00:00,  9.78it/s]

6. 更新频率控制

有时你需要控制进度条的更新频率。

示例代码 6:

from tqdm import tqdm
import time
total = 50
for i in tqdm(range(total), desc="Processing", mininterval=0.5):
    time.sleep(0.1)  # 模拟耗时操作

输出结果:

Processing: 100%|██████████| 50/50 [00:05<00:00,  9.82it/s]

7. 动态描述

在循环中更新描述文本。

示例代码 7:

from tqdm import tqdm
import time
total = 50
with tqdm(total=total, desc="Starting") as pbar:
    for i in range(total):
        time.sleep(0.1)  # 模拟耗时操作
        pbar.set_description(f"Processing {i+1}")
        pbar.update(1)

输出结果:

Processing 50: 100%|██████████| 50/50 [00:05<00:00,  9.82it/s]

8. 自定义回调

可以定义一个回调函数来处理进度条的更新。

示例代码 8:

from tqdm import tqdm
import time
def update_progress(progress):
    print(f"Progress: {progress}% completed.", end="\r")
total = 50
for i in range(total):
    time.sleep(0.1)  # 模拟耗时操作
    update_progress(int((i + 1) / total * 100))
print()  # 打印换行

输出结果:

Progress: 100% completed.

9. 使用 click 库

click 是一个用于构建命令行界面的库,也可以用来显示进度条。

示例代码 9:

import click
import time
total = 50
with click.progressbar(range(total), label='Processing') as bar:
    for i in bar:
        time.sleep(0.1)  # 模拟耗时操作

输出结果:

Processing 50/50 [100%]

10. 使用 rich 库

rich 是一个强大的库,可以创建美观的终端输出,包括进度条。

示例代码 10:

from rich.progress import track
import time
total = 50
for i in track(range(total), descriptinotallow="Processing..."):
    time.sleep(0.1)  # 模拟耗时操作

输出结果:

Processing... 100% 50/50 [00:05<00:00,  9.82it/s]

通过上述示例,你可以看到不同的方法来实现动态进度条。选择合适的方法取决于你的具体需求和场景。希望这些示例能帮助你在实际项目中有效地使用进度条功能!


来源:测试开发学习交流内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯