news 2026/4/15 18:16:51

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/4/15 16:02:04

Comparator与Comparable有什么区别

Comparator与Comparable有什么区别 章节目录 文章目录 Comparator与Comparable有什么区别 Comparator和Comparable都是Java中用于对象排序的接口,它们之间有一些关键的区别。 Comparable接口是在对象自身的类中实现的,它定义了对象的自然排序方式。一个…

作者头像 李华
网站建设 2026/4/10 8:53:46

F5-TTS语音克隆系统集成完整教程

F5-TTS语音克隆系统集成完整教程 【免费下载链接】F5-TTS Official code for "F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching" 项目地址: https://gitcode.com/gh_mirrors/f5/F5-TTS 在人工智能语音技术快速发展的今天&…

作者头像 李华
网站建设 2026/4/13 23:34:26

LZ4压缩算法实战手册:解锁极速数据处理能力

LZ4压缩算法实战手册:解锁极速数据处理能力 【免费下载链接】lz4 Extremely Fast Compression algorithm 项目地址: https://gitcode.com/GitHub_Trending/lz/lz4 在现代数据处理场景中,LZ4压缩算法以其惊人的速度表现脱颖而出。这款专注于极致性…

作者头像 李华
网站建设 2026/4/14 6:18:37

5大核心功能深度解析:OrcaSlicer如何重新定义3D打印体验

5大核心功能深度解析:OrcaSlicer如何重新定义3D打印体验 【免费下载链接】OrcaSlicer G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.) 项目地址: https://gitcode.com/GitHub_Trending/orc/OrcaSlicer OrcaSlicer作…

作者头像 李华
网站建设 2026/4/15 15:48:00

VeighNa量化交易框架:从零开始构建专业交易系统

🚀 掌握Python量化交易的核心利器,VeighNa框架为金融科技开发者提供了完整的解决方案。无论你是量化交易新手还是经验丰富的开发者,这套开源工具都能帮助你快速构建专业的交易系统。 【免费下载链接】vnpy 基于Python的开源量化交易平台开发框…

作者头像 李华