Python 动态进度条实现(python进度条tqdm)
off999 2024-09-14 07:15 54 浏览 0 评论
在编写Python脚本时,特别是在处理长时间运行的任务或者循环迭代的过程中,向用户展示任务的执行进度是非常重要的。进度条不仅能够提高用户体验,还能让用户对程序的运行情况有一个直观的了解。这篇文章将会介绍如何在Python中实现动态进度条,并通过多个实例来展示其实现方式。
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), description="Processing..."):
time.sleep(0.1) # 模拟耗时操作输出结果:
Processing... 100% 50/50 [00:05<00:00, 9.82it/s]通过上述示例,你可以看到不同的方法来实现动态进度条。选择合适的方法取决于你的具体需求和场景。希望这些示例能帮助你在实际项目中有效地使用进度条功能!
相关推荐
- win7重装系统一直反复重启(win7重装系统无限重启)
-
WIN7的系统装重复了,可以将原安装的系统删除,方法如下:1、如果以前的windows是安装在C盘上的话,点击桌面上的计算机,选中C盘,鼠标右键选择属性;2、点磁盘清理;3、点清理系统文件,点确定;4...
- 电脑如何格式化sd卡(电脑格式化sd卡,提示写有保护)
-
要在电脑上格式化SD卡,可以按照以下步骤:1.将SD卡插入计算机的SD卡读卡器中。2.打开“我的电脑”或“此电脑”,找到SD卡在计算机上的驱动器号(比如E盘)。3.右键单击SD卡驱动器,选择“格...
- 系统检测不到机械硬盘(系统检测不到机械硬盘怎么办)
-
第一,我们需要确认一下机械硬盘是否连接正常。可以检查一下硬盘的电源线和数据线是否插紧,是否松动或者断开。如果发现有松动或者断开的情况,可以重新插上并确保插紧。如果硬盘连接正常,但电脑仍然无法读取,那么...
- 路由器管理平台登录(路由器管理平台登录网址)
-
路由器的用户登录入口地址是:tplogin.cn电信运营商定制款登录地址是:192.168.2.1或者192.168.8.12、华为(容易)路由器华为路由器跟荣耀路由器只有IP地址,没有域名,它是...
- directx修复(DirectX修复工具官网下载)
-
使用DirectX修复工具很简单。首先需要下载并安装工具,然后打开工具并按照界面提示进行操作即可。工具的作用是自动检测系统中可能存在的DirectX问题,并尝试修复它们,从而保证计算机游戏等应用程序的...
-
- 网易邮箱app官方下载安装(网易邮箱163)
-
有些东西调用外部下载软件(如迅雷)是无法下载的,有时下载后不能正常打开,请尝试:在所要下载的文件上点击右键,选择“目标另存为”,也许就能成功下载。下载从网易163邮箱发来的云附件的步骤如下:1.成功登录网易邮箱后,我们点击页面左上角的“收件...
-
2025-12-18 16:51 off999
- 产品密钥是什么意思(产品密钥有什么用处)
-
产品密钥是产品授权的证明,有了它才能使用这个产品。软件商在生产自己产品时,为每个产品输入一个序列号(注册号/密钥),如“KH2J9-PC326-T44D4-39H6V-TVPBY”,用户要通过这个序列...
- 电脑打不开一直重启(电脑打不开一直重启黑屏)
-
电脑一直反复启动的原因和解决方法有以下几点:1、电脑内存问题,可以尝试更换内存条。2、电脑主板问题,给主板放电即可。3、硬盘模式有误,更改回正确模式即可。4、硬盘驱动有更改,把刚安装的驱动卸载就可进入...
- win7 自动关机(win7自动关机设置)
-
具体解决方法/步骤如下:1、首先先摸一下主机箱,看看是不是很烫,打开机箱盖,看看主机电源和CPU散热器是不是不转了,一般电脑如果温度过高的话,硬件会开启保护措施,会自动关机,如果风扇不转了,建议立即更...
- 绿茶软件园官网(下载绿茶软件园)
-
就是,广告满天飞,评论都是刷的。
- 路由器密码锁解锁教程(路由器密码忘怎么设置)
-
1.路由器IP地址定位:通常而言,路由器在连接主网线之后,会广播一个自身的网络IP地址,一般如下:192.168.1.0,192.168.1.1,目前各大路由器厂商也会播出一些怪异的地址,比如10.1...
- 台式电脑键盘按键错乱怎么恢复
-
如果你的机械键盘按键错乱,你可以尝试将键盘连接到电脑上,然后通过按下“Ctrl”、“Alt”和“Del”键同时重启电脑,看看是否能够恢复默认设置。另外,你还可以尝试在控制面板中找到键盘设置,检查是否有...
- 移动硬盘格式化后还能用吗(移动硬盘格式化后数据会丢失吗)
-
当然可以使用!格式化只是里面的所有文件会没有,还可以再存储的。格式化(format)是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被...
- 手机系统升级好不好
-
手机系统并不是随时更新,都是好用的,手机主要针对你的处理器,如果老型使用年头比较多的手机,不建议更新系统,更新系统之后容易造成耗电量非常大,卡顿现象比较严重,而新出的手机产品处理器功率都偏大,这种手机...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
