杰瑞科技汇

python安装processbar

安装 tqdm

tqdm 的安装非常简单,只需要使用 pip 命令即可,打开你的终端或命令行工具(Windows 是 CMD 或 PowerShell,macOS/Linux 是 Terminal),然后输入以下命令:

python安装processbar-图1
(图片来源网络,侵删)
pip install tqdm

验证安装

安装完成后,你可以通过在 Python 解释器中导入它来验证是否安装成功:

>>> from tqdm import tqdm
>>> print("tqdm 安装成功!")
tqdm 安装成功!

如果没有任何错误提示,就说明安装成功了。


基本使用方法

tqdm 的设计非常巧妙,它只需要将任何可迭代对象(如列表、range 等)包装起来,就能立刻生成一个进度条。

python安装processbar-图2
(图片来源网络,侵删)

示例 1:用于 for 循环

这是最常见的用法,假设你想遍历一个包含 100 个元素的列表:

from tqdm import tqdm
import time
# 创建一个包含100个元素的列表
my_list = range(100)
# 使用 tqdm 包装这个列表
for item in tqdm(my_list):
    # 模拟一些工作
    time.sleep(0.01) 

运行这段代码,你会在终端看到一个动态的进度条,类似这样:

100%|██████████| 100/100 [00:01<00:00, 98.04it/s]

进度条解读:

  • 100%: 当前进度百分比。
  • 进度条本身,表示完成的程度。
  • 100/100: 已完成的数量 / 总数量。
  • [00:01<00:00]: 已用时间 / 预估剩余时间。
  • 04it/s: 每秒处理的迭代次数(iteration per second)。

示例 2:结合 pandas

如果你在使用 pandas 进行数据处理,tqdm 可以无缝集成,让你在处理大型 DataFrame 时也能看到进度。

python安装processbar-图3
(图片来源网络,侵删)

确保你已经安装了 pandas

pip install pandas

可以这样使用:

import pandas as pd
from tqdm import tqdm
# 创建一个包含10万行的示例DataFrame
df = pd.DataFrame({'col': range(100000)})
# 启用 pandas 的 tqdm 支持
tqdm.pandas(desc="Processing DataFrame")
# 使用 .progress_apply() 替代 .apply()
df['col_squared'] = df['col'].progress_apply(lambda x: x**2)
print(df.head())

这里的 desc="Processing DataFrame" 是用来给进度条添加描述文本的,让输出更清晰。


进阶用法和参数

tqdm 提供了很多有用的参数,可以让你自定义进度条的外观和行为。

示例 3:自定义描述和单位

from tqdm import tqdm
import time
for i in tqdm(range(100), desc="下载文件", unit="KB"):
    time.sleep(0.02)

输出:

下载文件: 100%|██████████| 100/100 [00:02<00:00, 40.00KB/s]
  • desc: 进度条前端的描述文本。
  • unit: 进度条的单位,会显示在总数量之后。

示例 4:手动控制进度

循环中的迭代次数是动态的或者不确定的,这时,你可以使用 tqdm 的手动更新模式。

from tqdm import tqdm
import time
# 创建一个进度条,总工作量设为100
pbar = tqdm(total=100, desc="手动控制进度")
# 模拟不确定的循环
for i in range(100):
    # ... 这里是一些复杂的操作 ...
    time.sleep(0.01)
    # 手动更新进度
    pbar.update(1) # 每次增加1
# 完成后记得关闭进度条
pbar.close()
  • total: 设置总工作量。
  • pbar.update(n): 手动增加 n 个单位的进度。
  • `pbar.close()非常重要!** 手动模式下的进度条必须被关闭,否则可能会导致终端状态混乱。

示例 5:嵌套进度条

当你有双层循环时,tqdm 也能很好地处理嵌套进度条。

from tqdm import tqdm
import time
# 外层进度条
for i in tqdm(range(5), desc="外层任务"):
    # 内层进度条
    for j in tqdm(range(100), desc=f"  内层任务 {i+1}", leave=False):
        time.sleep(0.01)
  • leave=False: 当内层循环结束后,不清除内层进度条,这样外层进度条就能保持清晰。

其他优秀的进度条库

虽然 tqdm 是最主流的选择,但也有一些其他优秀的库,各有特色:

  • rich: 一个功能极其强大的库,不仅能创建漂亮的进度条,还能提供彩色输出、表格、markdown 等丰富的终端功能,如果你追求更炫酷的视觉效果,rich 是绝佳选择。

    pip install rich
    from rich.progress import Progress
    import time
    with Progress() as progress:
        task = progress.add_task("[cyan]下载中...", total=100)
        while not progress.finished:
            progress.update(task, advance=1)
            time.sleep(0.02)
  • alive-progress: 专注于提供非常华丽、带有动画效果的进度条,视觉效果极佳。

    pip install alive-progress
    from alive_progress import alive_bar
    import time
    with alive_bar(100, title='华丽的进度条') as bar:
        for i in range(100):
            time.sleep(0.02)
            bar()
特点 适用场景
tqdm 简单、轻量、兼容性好,是社区标准。 99% 的日常使用场景,特别是与 pandas 结合时。
rich 功能强大,进度条美观,还能做其他终端美化。 需要高质量终端输出、日志、表格等复杂应用。
alive-progress 动画效果华丽,视觉冲击力强。 对用户体验要求极高,希望进度条非常酷炫的项目。

给你的建议:

  • 初学者或日常使用:直接安装并使用 tqdm,它足够好用且文档齐全。
  • 想提升项目体验:可以尝试 rich,它不仅能做进度条,还能让你的整个命令行工具变得更专业。
  • 追求极致视觉效果:可以试试 alive-progress

希望这个详细的指南能帮助你顺利地在 Python 中使用进度条!

分享:
扫描分享到社交APP
上一篇
下一篇