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使用numpy实现BP神经网络
Mar 10 Python
使用Flask集成bootstrap的方法
Jul 24 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python3 实现串口两进程同时读写
Jun 12 Python
Python实现语音识别和语音合成功能
Sep 20 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
python实现的读取网页并分词功能示例
Oct 29 Python
python 并发下载器实现方法示例
Nov 22 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
Django显示可视化图表的实践
May 10 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中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
简单的JS多重继承示例
2008/03/13 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
常用的js方法合集
2017/03/10 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
JS实现网站吸顶条
2020/01/08 Javascript
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
解决python报错MemoryError的问题
2018/06/26 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
畜牧兽医本科生的自我评价
2014/03/03 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis