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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
python基础教程之自定义函数介绍
Aug 29 Python
Python中分数的相关使用教程
Mar 30 Python
python安装与使用redis的方法
Apr 19 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
python实现图片文件批量重命名
Mar 23 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
Dec 05 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
python数据预处理方式 :数据降维
Feb 24 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
Python使用Web框架Flask开发项目
Jun 01 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实现下载文件的两种方法
2013/07/05 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python实现Linux下守护进程的编写方法
2014/08/22 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
实习协议书范本
2014/04/22 职场文书
大班亲子运动会方案
2014/06/10 职场文书
文明城市标语
2014/06/16 职场文书
营销计划书范文
2015/01/17 职场文书
python tkinter模块的简单使用
2021/04/07 Python
零基础学java之循环语句的使用
2022/04/10 Java/Android