使用Python制作进度条有多少种方法?看这一篇文章就够了!

前言

偶然间刷到一个视频,说到:当程序正在运算时,会有一个较长时间的空白期,谁也不知道程序运行的进度如何,不如给他加个进度条。

于是我今个就搜寻一下,Python版的进度条都可以怎么写!

送书活动:【码银送书啦】多本机械工业出版社好书

正文

1、数字进度条

进度条的格式是"{当前循环次数} / {总循环次数}"。其中,循环次数从1开始,到500,000结束。

通过使用end='\r'参数,print语句的输出不会换行,而是每次循环都会覆盖上一次的输出。这样就实现了实时更新进度条的效果。

for i in range(500000):print(f'{i+1} / {500000}',end='\r')

2、使用百分号表示进度

for i in range(500):for j in range(5000):print(f'{((i+1)*100 // 500)}%',end='\r')

3、 使用字符完成简易进度条

该代码将打印出一行字符,并且字符的总长度为50个字符。 其中,字符的内容为"@"的重复,重复的次数为50次。 外面的"| |"是用来给字符串添加边框的,以增加可读性。


for i in range(500):for j in range(500):print("进度条:"f'|{"@"*((i+1)*50 // 500):50}|',end='\r')print("\n程序完成")

3和4是可以结合起来的 :

for i in range(500):for j in range(500):print("进度条:"f'|{"@"*((i+1)*50 // 500):50}|',f'{((i+1)*100 // 500)}%',end='\r')print("\n程序完成")

输出结果:

进度条:|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| 100%

 4、使用tqdm库完成进度条

官网:tqdm · PyPI

 安装这个库:pip install tqdm。

示例代码:

from tqdm import tqdm
import timefor i in tqdm(range(500)):time.sleep(0.1)

 5、使用alive-progress库完成进度条

官网链接:alive-progress · PyPI

安装库:pip install alive-progress 

示例代码:

from alive_progress import alive_bar
import timewith alive_bar(100, force_tty=True) as bar:for i in range(100):time.sleep(0.1)bar()

效果视频: 

进度条1

6、使用rich库完成进度条

安装库: pip install rich

import time
from rich.progress import trackfor i in track(range(100),description="进度:"):time.sleep(0.1)

这个截图没有在Pycharm编辑器里截图的原因是:

显示不全哈哈。

7、让文心一言给我画一个😃

import time  
import sys  def print_progress_bar(iteration, total, prefix='', suffix='', decimals=1, length=100, fill='█', print_end="\r"):  """  调用该函数时传入:  iteration   - 当前的进度(Int)  total       - 总进度(Int)  prefix      - 前缀字符串(Str)  suffix      - 后缀字符串(Str)  decimals    - 正数的小数位数(Int)  length      - 进度条长度(Int)  fill        - 进度条填充字符(Str)  print_end   - 结束字符(Str),默认是"\r",表示进度条更新在同一行  """  percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))  filled_length = int(length * iteration // total)  bar = fill * filled_length + '-' * (length - filled_length)  print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=print_end)  # 当完成进度时,打印一个换行符  if iteration == total:   print()  # 使用示例  
for i in range(1, 101):  print_progress_bar(i, 100, prefix='进度:', suffix='完成', length=50)  time.sleep(0.01)  # 休眠0.01秒,模拟进度更新

备注信息

Rich 是一个 Python 库,主要用于在终端中提供富文本和精美格式。它通过 API 允许用户轻松地为终端输出添加颜色和样式,支持绘制漂亮的表格、进度条、markdown 格式输出、语法高亮、源代码回溯等多种功能。Rich 库支持在 Linux、OSX 和 Windows 上运行,其中在新的 Windows 终端上可以支持真彩色和表情符号,而经典终端的色彩限制为8种颜色。此外,Rich 还可以与 Jupyter 笔记本一起使用,无需其他配置。

tqdm源自阿拉伯语塔卡杜姆(تقدّم)意思是“进步”,在西班牙语中是“我非常爱你”的缩写(特奎罗·德马西亚多)。立即让你的循环显示一个智能的进度条。

alive-progress的一些亮点:

  • 一个令人着迷的实时微调器,清楚地显示您的冗长过程没有崩溃,您的 SSH 连接没有冻结,视觉反馈会对您的处理速度做出反应。
  • 一个高效的多线程栏,以实际处理速度的一小部分进行自我更新,以保持较低的 CPU 使用率并避免终端垃圾邮件(每秒 1,000,000 次迭代相当于每秒大约 60 次更新,您也可以根据自己的喜好进行校准)。
  • ETA(预计到达时间)功能,具有智能指数平滑算法,可显示完成时间,使您能够更有效地计划时间并管理工作负载。
  • 自动打印记录挂钩,提供无缝集成和轻松跟踪,甚至在它们发生时用当前的条形位置来丰富它们。
  • 当处理完成时,它会打印出一个不错的收据,包括经过的时间和观察到的吞吐量。
  • 它检测溢和溢出,使您能够跟踪命中、未命中或任何所需的计数,而不一定是实际迭代。
  • 你可以暂停它!没错,你先在这里听到了!任何地方都没有其他进度条具有此功能!您可以在任何处理过程中返回 Python 提示符,调整一些项目,然后回到该正在运行的进程,就好像它从未停止过一样!所有小部件都保持原样,经过的时间很好地忽略了暂停的时间!alive_bar
  • 它是高度可定制的,有各种微调器和酒吧样式,以及几个现成的工厂,可以轻松生成你的!您甚至可以使用超级强大且酷炫的工具来帮助您设计自己的动画!您可以在屏幕上看到所有生成的帧和循环,具有多个详细级别,甚至包括生动的再现!无限的创造力触手可及

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/263010.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PNPM 批量检查和更新项目依赖

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

国家建筑装配式内装产业基地在沪成立,副主任单位优积科技协同助推绿色低碳循环发展

上海市室内装饰行业协会装配式内装产业专业委员会成立大会暨“国家建筑装配式内装产业基地”项目启动会于3月21日下午1点在上海光大酒店隆重举行。出席此次活动的包括市装协会长徐国俭,市装协党支部书记兼秘书长丛国梁,市装协装配式内装委主任顾泰昌&…

热点参数流控(Sentinel)

热点参数流控 热点流控 资源必须使用注解 @SentinelResource编写接口 以及 热点参数流控处理器 /*** 热点流控 必须使用注解 @SentinelResource* @param id* @return*/ @RequestMapping("/getById/{id}") @SentinelResource(value = "getById", blockHand…

华清远见嵌入式学习——驱动开发——day9

目录 作业要求: 作业答案: 代码效果: ​编辑 Platform总线驱动代码: 应用程序代码: 设备树配置: 作业要求: 通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试&…

转运机器人,AGV底盘小车:打造高效、精准的汽车电子生产线

为了满足日益增长的市场需求,保持行业领先地位,某汽车行业电子产品企业引入富唯智能AMR智能搬运机器人及其智能物流解决方案,采用自动化运输措施优化生产节拍和搬运效率,企业生产效率得到显著提升。 项目背景: 1、工厂…

C++中的STL数据结构

内容来自:代码随想录:哈希表理论基础 1.常见的三种哈希结构 当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构 数组 set (集合) map(映射) 在C中,set 和 map 分别提供以下三种数据结构…

HTTPS(超文本传输安全协议)被恶意请求该如何处理。

HTTPS(超文本传输安全协议)端口攻击通常是指SSL握手中的一些攻击方式,比如SSL握手协商过程中的暴力破解、中间人攻击和SSL剥离攻击等。 攻击原理 攻击者控制受害者发送大量请求,利用压缩算法的机制猜测请求中的关键信息&#xf…

什么是SSD型云服务器?

​  SSD云服务器是一种使用固态硬盘代替传统HDD进行存储的虚拟机。SDD 使用闪存单元来存储数据,与云计算技术相结合,形成强大且高效的存储解决方案,可以随时随地访问。 SSD云服务器如何工作? SSD云服务器是利用虚拟化和云计算技术创建的。…

ElementUI table表格组件实现双击编辑单元格失去焦点还原,支持多单元格

在使用ElementUI table表格组件时有时需要双击单元格显示编辑状态,失去焦点时还原表格显示。 实现思路: 在数据中增加isFocus:false.控制是否显示在table中用cell-dblclick双击方法 先看效果: 上源码:在表格模板中用scope.row…

最新Unity游戏主程进阶学习大纲(2个月)

过完年了,很多同学开始重新规划自己的职业方向,找更好的机会,准备升职或加薪。今天给那些工作了1~5年的开发者梳理”游戏开发客户端主程”的学习大纲,帮助大家做好面试准备。适合Unity客户端开发者。进阶主程其实就是从固定的几个方面搭建好完整的知识体…

python编程中模块的调用方法

模块,就是制造大型程序的“零件"。这些零件可以是外购的也可以是“自造”的。它们的使用方法很简单,就是“拿来”——import. “拿来”模块的方法有from***import*** 和import***,宗旨就是“拿来”——import. 对不对?

Vision Transfomer系列第二节---Tricks测试

目录 学习式和固定式位置编码测试dropout的作用测试block深度的作用测试embeding维度大小的作用测试多头的作用测试Overlap Patch的作用 学习式和固定式位置编码测试 主要测试无位置编码\可学习位置编码和固定式位置编码的训练效果: 其中固定式位置编码采用之前博客的正余弦位…

架构设计:数据库扩展

引言 随着业务的发展和用户规模的增长,数据库往往会面临着存储容量不足、性能瓶颈等问题。为了解决这些问题,数据库扩展成为了一种常见的解决方案。在数据库扩展的实践中,有许多不同的策略和技术可供选择,其中包括水平拆分、垂直…

高通 Android 12 Settings不显示版本号问题

1、最近项目遇到一个奇葩问题,编译系统版本号不见了? 2、一开始我想着可能是自己代码没有make clean结果编译几个小时,然后烧录固件发现还是未生效。 3、然后这时候我又去看git log review最近修改也没有太大发现(待定&#xff…

介绍 CI / CD

目录 一、介绍 CI / CD 1、为什么要 CI / CD 方法简介 1、持续集成 2、持续交付 3、持续部署 2、GitLab CI / CD简介 3、GitLab CI / CD 的工作原理 4、基本CI / CD工作流程 5、首次设置 GitLab CI / CD 6、GitLab CI / CD功能集 一、介绍 CI / CD 在本文档中&#x…

开源 - 一款可自定义的在线免杀平台|过x60、wd等

免责声明:本工具仅供安全研究和教学目的使用,用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任,且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规,并理解并同意本声明…

K线实战分析系列之二:伞形线

K线实战分析系列之二:伞形线 一、伞形线二、锤子线三、上吊线四、锤子线和上吊线的特征 一、伞形线 可以是看涨信号,也可以是看跌信号,具体要看它处于趋势的哪个位置 二、锤子线 出现在下行趋势中就叫锤子线锤子线是阳线看涨意义更大一点市…

petalinux_zynq7 驱动DAC以及ADC模块之四:python实现http_api

前文: petalinux_zynq7 C语言驱动DAC以及ADC模块之一:建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二:petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录(python 排班表系列)

背景需求 上学期的周安排里,每班每周的自主游戏会轮到多个不同的内容 因此在每周的自主游戏观察有2次记录,观察的项目可以写不一样的, 如一位老师写沙水游戏,另一位写表演游戏 本学期,中班的自主游戏全部是户外的&am…

ApexRBp在线粒子传感器在电动汽车电池制造的应用

电动汽车电池的崛起与颗粒污染的挑战 随着电动汽车(EV)市场的迅速扩张,对高性能锂离子电池的需求也急剧增加。这些电池不仅是EV的心脏,更是推动其前行的核心动力。然而,在电池制造的每一个环节,都需要对多…