6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)


Posted in Python onJanuary 06, 2020

在项目开发过程中加载、启动、下载项目难免会用到进度条,如何使用Python实现进度条呢?

这里为小伙伴们分享四种Python实现进度条的库:Progress库、tqdm库、alive-progress库和PySimpleGUI库,其中前三个是文本进度条库,最后一个是可以在GUI上运行的进度条。

1、Progress库

Progress是一种文本进度条库,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示:

pip install progressbar2

实现总耗时1S的进度条 ,代码如下所示:

import time
import progressbar
p = progressbar.ProgressBar()
N = 10
# 加上进度,就是将range(N)放到ProgressBar()中
for i in p(range(N)):
  #每次延时0.1S
  time.sleep(0.1)

效果如下所示:

6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

还可以设置为中文提示,代码如下所示:

import time
import progressbar
 
 
def custom_len(value):
  # These characters take up more space
  characters = {
    '进': 2,
    '度': 2,
  }
 
  total = 0
  for c in value:
    total += characters.get(c, 1)
 
  return total
 
 
bar = progressbar.ProgressBar(
  widgets=[
    '进度: ',
    progressbar.Bar(),
    ' ',
    progressbar.Counter(format='%(value)02d/%(max_value)d'),
  ],
  len_func=custom_len,
)
for i in bar(range(10)):
  time.sleep(0.1)

效果如下所示:

6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

2、tqdm库

tqdm库消耗资源很低,每次迭代大约60ns(gui = True时为80ns),并且已针对性能下降进行了单元测试。完善的ProgressBar具有800ns / iter的开销,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示:

pip install tqdm

实现总耗时1S的进度条 ,代码如下所示:

import time
from tqdm import tqdm
from tqdm._tqdm import trange
N = 10
for i in tqdm(range(N)):
  time.sleep(0.1)

效果如下所示:

6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

不仅如此, tqdm库在实现进度条的同时还可以遍历迭代的对象,做到高效率工作,例如遍历列表["a", "b", "c", "d"]的同时实现进度条,代码如下所示:

from tqdm import tqdm
import time
 
text = ""
for char in tqdm(["a", "b", "c", "d"]):
  time.sleep(0.1)
  text = text + char
print(text)

效果如下所示:

6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

3、alive-progress库

alive-progress库是一种具有动态效果的智能进度条,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示:

pip install alive-progress

实现总耗时10S的动态效果进度条 ,代码如下所示:

from alive_progress import alive_bar
import time
items = range(10)         # retrieve your set of items
with alive_bar(len(items)) as bar:  # declare your expected total
  for item in items:        # iterate as usual
    # process each item
    bar()            # call after consuming one item
    time.sleep(1)

效果如下所示:

6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

4、PySimpleGUI

PySimpleGUI库是基于Tkinter、Remi、wxPython和PyQt库GUI库,我们可以基于它实现在GUI中添加进度条,当然这只是抛砖引玉,小伙伴们可以使用自己喜爱的GUI库实现进度条设计,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示:

pip install pysimplegui

实现总耗时10S的动态GUI效果进度条 ,代码如下所示:

import PySimpleGUI as sg
import time
items = range(10)  
for i, item in enumerate(items): 
 sg.one_line_progress_meter('Progress Meter', i+1, len(items), '-key-') 
 time.sleep(1)

效果如下所示:

6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中列表(list)操作方法汇总
Aug 18 Python
Python查找相似单词的方法
Mar 05 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python实现的求解最小公倍数算法示例
May 03 Python
opencv python 傅里叶变换的使用
Jul 21 Python
Python实现最大子序和的方法示例
Jul 05 Python
python调用支付宝支付接口流程
Aug 15 Python
解析python实现Lasso回归
Sep 11 Python
python numpy中cumsum的用法详解
Oct 17 Python
python 经典数字滤波实例
Dec 16 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
基于python+selenium的二次封装的实现
Jan 06 #Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 #Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 #Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 #Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 #Python
Python tkinter三种布局实例详解
Jan 06 #Python
Python有参函数使用代码实例
Jan 06 #Python
You might like
来自PHP.NET的入门教程
2006/10/09 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
深圳茁壮笔试题
2015/05/28 面试题
自荐书4要点
2014/01/25 职场文书
导游欢迎词范文
2015/01/23 职场文书
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle