当前位置: 首页 > news >正文

使用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
  • 它是高度可定制的,有各种微调器和酒吧样式,以及几个现成的工厂,可以轻松生成你的!您甚至可以使用超级强大且酷炫的工具来帮助您设计自己的动画!您可以在屏幕上看到所有生成的帧和循环,具有多个详细级别,甚至包括生动的再现!无限的创造力触手可及

相关文章:

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

前言 偶然间刷到一个视频,说到:当程序正在运算时,会有一个较长时间的空白期,谁也不知道程序运行的进度如何,不如给他加个进度条。 于是我今个就搜寻一下,Python版的进度条都可以怎么写! 送书…...

SpringBoot-2.7.6基于SLF4J日志门面的日志框架切换

SpringBoot 没有强制性的日志记录依赖项,但 Commons Logging API 除外,它通常由 Spring Framework 的模块提供。 要使用 Logback,您需要将其包含在类路径中。 推荐的方法是您只需要通过启动器,这都取决于 . 对于 Web 应用程序 ,因为它可传递地依赖于日志记录启动器。 如果…...

MongoDB聚合运算符:$binarySize

$binarySize聚合运算符返回给定字符串或二进制数据的字节数。 语法 { $binarySize: <string or binData> }使用 <string or bindData>可以是任何能够被解析为字符串和二进制数据的表达式&#xff1b;如果表达式解析为null&#xff0c;则$binarySize也返回null&a…...

Android的ViewModel

前言 在Compose的学习中&#xff0c;我们在可组合函数中使用rememberSaveable​​​​​​​保存应用数据&#xff0c;但这可能意味着将逻辑保留在可组合函数中或附近。随着应用体量不断变大&#xff0c;您应将数据和逻辑从可组合函数中移出。 而在之前的应用架构学习中&…...

Android 圆环带刻度条进度动画效果实现

效果图 需求是根据传感器做一个重力球效果&#xff0c;先实现了动画后续加上跟传感器联动. 又是摆烂的一天&#xff0c; 尚能呼吸&#xff0c;未来可期啊 View源码 package com.android.circlescalebar.view;import android.content.Context; import android.content.res.Typ…...

94. 二叉树的中序遍历

// 定义一个名为Solution的类&#xff0c;用于解决二叉树的中序遍历问题 class Solution { // 定义一个公共方法&#xff0c;输入是一个二叉树的根节点&#xff0c;返回一个包含中序遍历结果的整数列表 public List<Integer> inorderTraversal(TreeNode root) { // …...

汽车信息安全概述

随着智能网联汽车的迅猛发展&#xff0c;车辆不再是简单的交通工具&#xff0c;而是集数据收集、处理与通信于一体的移动智能终端。然而&#xff0c;这一变革也使得汽车成为黑客攻击的新目标。汽车信息安全问题日益凸显&#xff0c;成为行业关注的焦点。本文将深入探讨汽车信息…...

Linux——基础IO

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C语言IO1、写文件2、读文件3、stdin & stdout & stderr 二、系统文件I/O1、写文件…...

数据结构-数组

一,数组基础及注意事项 1,用来储存一组相同的类型的数据. 2,在内存中,分配连续的空姐,数组创建时要指定容量(大小). 3,创建格式: 数据类型 []数组名 int[] arr new int[10] int[] arr2 {1,2,3,4}. 4,索引--访问数组时通过索引进行操作. (注意:一定要理解索引的含义,在数据结…...

【Java程序设计】【C00279】基于Springboot的智慧外贸平台(有论文)

基于Springboot的智慧外贸平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧外贸平台 本系统分为系统功能模块、管理员功能模块、买家功能模块以及商家功能模块。 系统功能模块&#xff1a;在平台首页可以…...

C#,计算几何,计算机图形学(Computer Graphics)洪水填充算法(Flood Fill Algorithm)与源代码

1 泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法(Flood Fill Algorithm) &#xff0c;又称洪水填充算法&#xff0c;是在很多图形绘制软件中常用的填充算法&#xff0c;最熟悉不过就是 windows 自带画图软件的油漆桶功能。 2 源程序 using System; using System.Collecti…...

C# 实现网页内容保存为图片并生成压缩包

目录 应用场景 实现代码 扩展功能(生成压缩包) 小结 应用场景 我们在一个求职简历打印的项目功能里&#xff0c;需要根据一定的查询条件&#xff0c;得到结果并批量导出指定格式的文件。导出的格式可能有多种&#xff0c;比如WORD格式、EXCEL格式、PDF格式等&#xff0c;…...

C#_事件简述

事件模型简述 C#中事件的运行模式为"发布订阅模型"&#xff0c;事件触发者称为"发布者"&#xff0c;事件处理者称为"订阅者" 事件模型的五个组成部分 事件&#xff08;成员&#xff09;事件的拥有者&#xff08;类/对象&#xff09;事件的响应…...

C语言:指针(一)

目录 1.内存和地址2. 指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引用操作符&#xff08;*&#xff09;2.2.1 指针变量2.2.2 解引用操作符&#xff08;*&#xff09; 2.3 指针变量的大小 3.指针变量的类型和意义3.1 指针的解引用3.2 指针 -指…...

【leetcode刷题之路】面试经典150题(3)——哈希表+区间

文章目录 5 哈希表5.1 【哈希表】赎金信5.2 【数学】同构字符串5.3 【数学】单词规律5.4 【哈希表】有效的字母异位词5.5 【哈希表】字母异位词分组5.6 【双指针】两数之和5.7 【数学】快乐数5.8 【哈希表】219. 存在重复元素 II5.9 【数学】最长连续序列 6 区间6.1 【数学】汇…...

群晖NAS DSM7.2.1安装宝塔之后无法登陆账号密码问题解决

宝塔的安装就不在这赘述了&#xff0c;只说下&#xff0c;启动之后默认账号密码无法登陆的问题。 按照上面给出的账号密码&#xff0c;无法登陆 然后点忘记密码&#xff0c;由于是docker安装的&#xff0c;根目录下没有/www/server/panel 。 也没有bt命令 要怎么修改呢。 既然…...

9、使用 ChatGPT 的 GPT 制作自己的 GPT!

使用 ChatGPT 的 GPT 制作自己的 GPT! 想用自己的 GPT 超越 GPT ChatGPT 吗?那么让我们 GPT GPT 吧! 山姆 奥特曼利用这个机会在推特上宣传 GPTs 的同时还猛烈抨击了埃隆的格罗克。 GPTs概览 他们来了! 在上周刚刚宣布之后,OpenAI 现在推出了其雄心勃勃的新 ChatGPT…...

企业微信应用开发:使用Cpolar域名配置进行本地接口回调的调试指南

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段&#xff0c;应用服务通常是部署在开发环境&#xff0c;在有数据回调的开发场…...

js 可选链运算符(?.)空值合并运算符(??)逻辑空赋值运算符(??=)

可选链运算符&#xff08;?.&#xff09;允许读取位于连接对象链深处的属性的值&#xff0c;而不必明确验证链中的每个引用是否有效。?. 运算符的功能类似于 . 链式运算符&#xff0c;不同之处在于&#xff0c;在引用为空 (nullish ) (null 或者 undefined) 的情况下不会引起…...

vue 手势解锁功能

效果 实现 <script setup lang"ts"> const canvasRef ref<HTMLCanvasElement>() const ctx ref<CanvasRenderingContext2D | null>(null) const width px2px(600) const height px2px(700) const radius ref(px2px(50))const init () > …...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...