news 2026/5/2 19:25:50

HoRain云--Python进度条实现全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--Python进度条实现全攻略

🎬 HoRain云小助手:个人主页

🔥 个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

💡 第三方库推荐

tqdm

alive-progress

rich

🛠️ 手动实现基础进度条

💻 图形界面进度条

📊 常见应用场景

如何选择?


在Python中为耗时操作添加进度条可以有效提升用户体验。下面我将介绍几种主流的实现方法,包括推荐的第三方库和手动实现方式。

下表快速对比了几个主流的进度条库:

库名

主要特点

适用场景

安装命令

tqdm

简单高效,生态强大,文档丰富

绝大多数循环迭代场景,是首选方案

pip install tqdm

alive-progress

动态效果丰富,视觉效果酷炫

终端交互、演示或需要更生动反馈的场景

pip install alive-progress

rich

功能全面,可美化终端整体输出

复杂的CLI工具,当进度条只是需求之一时

pip install rich

💡 第三方库推荐

tqdm

tqdm是Python社区最流行、最易用的进度条库。

基本使用:只需用tqdm()包装任何可迭代对象即可。

from tqdm import tqdm import time for i in tqdm(range(100)): time.sleep(0.01) # 模拟耗时任务

高级功能tqdm功能非常丰富。

alive-progress

如果你追求更动态、美观的进度条,alive-progress是个不错的选择。

from alive_progress import alive_bar import time with alive_bar(100, title='Processing') as bar: # 使用上下文管理器 for i in range(100): time.sleep(0.01) bar() # 每次迭代后更新进度条
rich

如果您的项目除了进度条,还需要输出彩色文本、表格、日志等富文本内容,rich.progress模块是理想选择。

from rich.progress import Progress import time with Progress() as progress: # 支持多个并发任务 task1 = progress.add_task("[red]Downloading...", total=100) task2 = progress.add_task("[green]Processing...", total=200) while not progress.finished: progress.update(task1, advance=0.9) progress.update(task2, advance=0.5) time.sleep(0.1)

🛠️ 手动实现基础进度条

理解其原理有助于更好地自定义。以下是一个基础的手动实现版本:

import sys import time def print_progress_bar(iteration, total, prefix='', suffix='', decimals=1, length=50, fill='█'): """ 调用示例: for i in range(total): time.sleep(0.1) print_progress_bar(i + 1, total, prefix='进度:', suffix='完成', length=50) """ percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) filled_length = int(length * iteration // total) bar = fill * filled_length + '-' * (length - filled_length) # 使用'\r'将光标移回行首,实现原地更新 sys.stdout.write(f'\r{prefix} |{bar}| {percent}% {suffix}') sys.stdout.flush() # 当任务完成时,打印一个换行符 if iteration == total: print() # 使用示例 total = 100 for i in range(total): time.sleep(0.1) # 模拟耗时任务 print_progress_bar(i + 1, total, prefix='进度:', suffix='完成', length=50)

💻 图形界面进度条

对于GUI应用程序,可以使用相应的GUI工具包创建进度条。

使用Tkinter(标准库)示例

import tkinter as tk from tkinter import ttk import threading import time def start_progress(): for i in range(101): time.sleep(0.1) progress_var.set(i) # 更新进度值 root.update_idletasks() # 更新GUI root = tk.Tk() progress_var = tk.IntVar() progress_bar = ttk.Progressbar(root, variable=progress_var, maximum=100) progress_bar.pack() start_button = tk.Button(root, text="开始", command=lambda: threading.Thread(target=start_progress).start()) start_button.pack() root.mainloop()

📊 常见应用场景

如何选择?

希望这些信息能帮助您为Python项目选择合适的进度条方案。如果您有特定的使用场景,比如是在Jupyter Notebook中还是处理多任务,我可以提供更具体的建议。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:21:45

LyricsX:macOS上最强大的实时歌词显示神器

LyricsX:macOS上最强大的实时歌词显示神器 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/lyr/LyricsX 🎵 作为一名音乐爱好者,你是否曾经在听歌时想要同步看到歌…

作者头像 李华
网站建设 2026/5/2 13:01:59

微店商品快递费用API接口指南

你需要一份结构化的微店商品快递费用 API 使用指南,涵盖摘要、接口概述、Python 请求示例和结语四个核心部分,用于理解和实际调用该 API。以下是完整且可落地的指南内容:一、摘要微店商品快递费用 API 是微店开放平台提供的核心接口之一&…

作者头像 李华
网站建设 2026/4/30 3:24:26

OHHTTPStubs高级应用指南:优化网络测试瓶颈的专业策略

OHHTTPStubs高级应用指南:优化网络测试瓶颈的专业策略 【免费下载链接】OHHTTPStubs AliSoftware/OHHTTPStubs: OHHTTPStubs是一个iOS和macOS的Objective-C和Swift库,用于在单元测试或者开发阶段模拟网络请求。它允许开发者设置HTTP stubs(存…

作者头像 李华
网站建设 2026/4/26 20:41:38

如何在Miniconda中切换Python版本以兼容PyTorch

如何在 Miniconda 中切换 Python 版本以兼容 PyTorch 在深度学习项目开发中,一个看似简单却频繁困扰开发者的问题是:为什么我安装的 PyTorch 就是导入不了?明明 pip install 成功了,可一运行 import torch 就报错。这类问题背后&a…

作者头像 李华