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中使用item()方法遍历字典的例子
Aug 26 Python
机器学习python实战之手写数字识别
Nov 01 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
python实现大转盘抽奖效果
Jan 22 Python
Django 表单模型选择框如何使用分组
May 16 Python
python绘制多个子图的实例
Jul 07 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
python科学计算之scipy——optimize用法
Nov 25 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
pandas apply多线程实现代码
Aug 17 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实现将任意进制数转换成10进制的方法
2015/04/17 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
小学生感恩演讲稿
2014/04/25 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
商业融资计划书
2014/04/29 职场文书
小学生运动会通讯稿
2014/09/23 职场文书