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 pickle 和 shelve模块的用法
Sep 16 Python
python删除文件示例分享
Jan 28 Python
Python编写生成验证码的脚本的教程
May 04 Python
python实现数组插入新元素的方法
May 22 Python
python 实现登录网页的操作方法
May 11 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Python字符串逆序输出的实例讲解
Feb 16 Python
python实现爬山算法的思路详解
Apr 09 Python
利用Django模版生成树状结构实例代码
May 19 Python
10个Python面试常问的问题(小结)
Nov 20 Python
Python多线程正确用法实例解析
May 30 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 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中time()和mktime()方法的区别
2013/09/28 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python验证码识别处理实例
2015/12/28 Python
深入理解Python3中的http.client模块
2017/03/29 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
元旦晚会邀请函
2014/01/27 职场文书
销售冠军获奖感言
2014/02/03 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
优秀党员申报材料
2014/12/18 职场文书
单位工作证明范本
2015/06/15 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
2017年寒假社区服务活动总结
2016/04/06 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python