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

news2024/11/17 15:46:29

前言

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

于是我今个就搜寻一下,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 time

for 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 time

with 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 track

for 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.coloradmin.cn/o/1467246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

展望2024生物发酵领域-振华仪表

参展企业介绍 杭州振华仪表有限公司(简称“振华仪表”)是集电磁流量计研发、生产、销售、服务于一体的国家高新技术企业、省“专精特新”企业,主导起草了《电磁流量计检定规程(JJG 1033—2007)》、《智能变送器性能评定方法》等4项国家标准。 振华仪表于1985年成功…

[已解决]npm淘宝镜像最新官方指引(2023.08.31)

最新的配置淘宝镜像的淘宝官方提供的方法 npm config set registry https://registry.npmmirror.com原来的 registry.npm.taobao.org 已替换为 registry.npmmirror.com ,当点击 registry.npm.taobao.org 会默认跳转到 registry.npmmirror.com 如果你想将npm的下载…

小保司的理赔是否有保障?

《小保司的理赔是否有保障?》 预计6-7分钟读完 连续日更:第7天 作者:罗师兄 微信号:luoyun515 同一个人,同样的重疾险责任, 同样的保额,同样的缴费方式, 不同的保司保费可以相…

一文看懂大模型 Sora 技术推演

sora 一出,引起社会各界广泛关注。中美AI的差距进一步扩大,中美人才培养体系的差距等等言论,甚嚣尘上。 其实文生视频领域,华人学者和产业界的参与度还是非常高的。 那么 Sora 到底是谁做的,怎么做的,本篇…

2024年 最新python调用ChatGPT实战教程

2024年 最新python调用ChatGPT实战教程 文章目录 2024年 最新python调用ChatGPT实战教程一、前言二、具体分析1、简版程序2、多轮对话3、流式输出4、返回消耗的token 一、前言 这个之前经常用到,简单记录一下,注意目前chatgpt 更新了,这个是最新版的&am…

加载arcgis切片服务网络请求有大量404错误

需求: 前端访问arcgis切片服务时,在网络请求中出现大量404(Not Found)错误,切片时设置了感兴趣区域,在感兴趣范围内请求切片时能够正常返回切片。 问题分析: 设置感兴趣区域切片的目的是减少站…

Linux——简单的Shell程序

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…

LeetCode.2583. 二叉树中的第 K 大层和

题目 2583. 二叉树中的第 K 大层和 分析 这道题其实考察的是二叉树的层序遍历&#xff0c;下面我介绍一个二叉树的层序遍历模版&#xff1a; public List<List<Integer>> levelOrder(TreeNode root) {// 记录最终的结果List<List<Integer>> res n…

Python实战:xlsx文件的读写

Python实战&#xff1a;xlsx文件的读写 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您的订阅和支持~ &#…

从微软、英伟达、亚马逊到“木头姐”,大佬瞄准AI新风口:类人机器人

新近消息显示&#xff0c;一家开发类人机器人的初创公司新近融资云集硅谷大厂和风投基金&#xff0c;显示类人机器人正在成为科技巨头押注人工智能&#xff08;AI&#xff09;应用的新风口。 上月末就有媒体提到&#xff0c;上述初创Figure AI Inc.在磋商&#xff0c;寻求在微…

影视后期:剪辑逻辑故事的层次(三幕式故事结构)

写在前面 学习影视后期整理相关笔记博文内容涉及&#xff1a;三幕式理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 流水账式短视频 流水账单线叙事要点&…

【JVM】MySQL驱动加载如何打破双亲委派机制

上文根据MySQL中Driver加载相关内容介绍了Java中SPI机制&#xff0c;本文详细介绍驱动的加载如何打破了双亲委派机制 Java双亲委派机制详细内容可以参考之前文章&#xff0c;在这里简单做个回顾 原理 首先我们要了解 Java 中的三层类加载器&#xff0c;分别为Bootstrap Class…

Java 学习和实践笔记(19):this的使用方法

this用来指向当前对象的地址。 this的用法&#xff1a; 1&#xff09;在普通方法中&#xff0c;this总是指向调用该方法的对象。在普通方法中&#xff0c;它是作为一种隐式参数一直就存在着&#xff08;这句话的意思&#xff0c;就是其实在普通方法中&#xff0c;编译器一直就…

林浩然与杨凌芸的Java泛型历险记:从类型安全到代码简洁,一场浪漫的编程革命

林浩然与杨凌芸的Java泛型历险记&#xff1a;从类型安全到代码简洁&#xff0c;一场浪漫的编程革命 Lin Haoran and Yang Lingyun’s Java Generics Adventure: A Romantic Programming Revolution from Type Safety to Code Simplicity 在那片充满逻辑与智慧的Java大陆上&…

家政小程序开发:帮助企业打造专属品牌,提升知名度

随着当下消费观念的升级&#xff0c;人口老龄化的严重&#xff0c;家政服务成为当下年轻人的必不可少的选择&#xff0c;我国家政服务市场的发展前景非常广阔。 如今&#xff0c;消费者对家政的需求日益多样化&#xff0c;家政市场数字化转型将成为一大发展趋势。在互联网等信…

开发分销商城小程序助力您的业务快速增长

一、什么是分销商城小程序&#xff1f; 分销商城小程序是一种基于微信平台开发的小程序&#xff0c;可以帮助商家快速建立自己的分销体系&#xff0c;实现商品的快速销售。 二、分销商城小程序的优势&#xff1a; 低成本&#xff1a;开发成本低&#xff0c;无需投入大量资金…

程序媛的mac修炼手册-- 小白入门Java篇

最近因为要用CiteSpace做文献综述&#xff0c;间接接触Java了。所以&#xff0c;继Python、C之后&#xff0c;又要涉猎Java了。刺激&#xff01;&#xff01; 由于CiteSpace与Java要求版本高度匹配&#xff0c;有个匹配详情明天为大家讲解。总之&#xff0c;我的Java之旅开始于…

“IT行业职业发展的黄金之路:哪些证书能为你增光添彩?“

文章目录 每日一句正能量前言1、浙大计算机程序设计能力考试证书&#xff08;PAT&#xff09;2、全国计算机等级考试证书(NCRE)3、计算机技术与软件专业资格考试证书&#xff08;软考&#xff09;4、通信专业技术人员职业水平证书5、全国计算机应用水平考试证书&#xff08;NIT…

记录 使用FFMPEG 笔记本摄像头推流

一、使用 FFMPEG 测试摄像头拉流显示 # 获取摄像头名称 ffmpeg -list_devices true -f dshow -i dummy# 我笔记本上的摄像头名称如下 device_pnp_\\?\usb#vid_0408&pid_1020&mi_00#6&199e90f7&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global# 使…

做抖音小店怎么选品?给新手商家的三条建议,能让你销量猛增999+

大家好&#xff0c;我是电商花花。 总是担心店铺不出单&#xff0c;没有销量&#xff0c;看着断断续续的收益&#xff0c;新手商家应该都是愁容满面吧。 今天花花从是3个维度上给新手商家一些建议&#xff0c;讲解一下如何高效选品&#xff0c;加你如何让你出单猛增999。 以前…