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中optionParser模块的使用方法实例教程
Aug 29 Python
Python原始字符串(raw strings)用法实例
Oct 13 Python
Python中的super用法详解
May 28 Python
Python捕捉和模拟鼠标事件的方法
Jun 03 Python
对python 自定义协议的方法详解
Feb 13 Python
Python List cmp()知识点总结
Feb 18 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python读取指定字节长度的文本方法
Aug 27 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
python区分不同数据类型的方法
Oct 14 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Python CSV文件模块的使用案例分析
Dec 21 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
改变Apache端口等配置修改方法
2008/06/05 PHP
php 页面执行时间计算代码
2008/12/04 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
jQuery ready函数滥用分析
2011/02/16 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
python实现rest请求api示例
2014/04/22 Python
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python的依赖管理的实现
2019/05/14 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Python猴子补丁知识点总结
2020/01/05 Python
新手学python应该下哪个版本
2020/06/11 Python
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
财务总监岗位职责
2014/03/07 职场文书
党课心得体会范文
2014/09/09 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
放假通知格式
2015/04/14 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
创业计划之特色精品店
2019/08/12 职场文书
JavaScript实现简单拖拽效果
2021/09/15 Javascript
Python与C++中梯度方向直方图的实现
2022/03/17 Python