news 2026/8/7 14:08:02

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/7/31 14:45:50

5步掌握pyalgotrade事件驱动策略:高效构建市场时机分析系统

5步掌握pyalgotrade事件驱动策略:高效构建市场时机分析系统 【免费下载链接】pyalgotrade Python Algorithmic Trading Library 项目地址: https://gitcode.com/gh_mirrors/py/pyalgotrade 你是否曾想过,如何从海量市场数据中快速识别关键交易机会…

作者头像 李华
网站建设 2026/8/2 16:48:24

远程服务器SSH登录Miniconda环境执行批量任务

远程服务器SSH登录Miniconda环境执行批量任务 在现代AI研发与数据工程实践中,一个常见的场景是:你在本地写好了训练脚本,却需要在远程GPU服务器上运行。这台服务器可能同时承载多个项目——有人用PyTorch 1.12,有人跑TensorFlow 2…

作者头像 李华
网站建设 2026/7/29 11:42:23

OpenAssistant LLaMa 30B终极部署指南:架构解密与实战应用深度解析

OpenAssistant LLaMa 30B终极部署指南:架构解密与实战应用深度解析 【免费下载链接】oasst-sft-6-llama-30b-xor 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/oasst-sft-6-llama-30b-xor 探索大语言模型部署的深度奥秘!本文将为你揭…

作者头像 李华
网站建设 2026/8/1 3:54:00

适用于教学实验的MIPS ALU设计超详细版解析

从零搭建CPU的第一步:手把手教你设计教学级MIPS ALU你有没有想过,一条简单的add $t0, $t1, $t2指令,是如何在硬件层面被“理解”并执行的?它不是魔法,也不是黑箱。它的背后,是一个由逻辑门、加法器和控制信…

作者头像 李华
网站建设 2026/8/7 1:22:52

AI招聘助手:用智能简历筛选和面试问题生成告别招聘烦恼

AI招聘助手:用智能简历筛选和面试问题生成告别招聘烦恼 【免费下载链接】opengpts 项目地址: https://gitcode.com/gh_mirrors/op/opengpts 你是否也曾经历过这样的困境?面对堆积如山的简历,每个候选人看起来都不错,却不知…

作者头像 李华