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进行行为驱动开发的入门教程
Apr 23 Python
python中string模块各属性以及函数的用法介绍
May 30 Python
python爬取拉勾网职位数据的方法
Jan 24 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
Python continue继续循环用法总结
Jun 10 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
Django 全局的static和templates的使用详解
Jul 19 Python
浅析python表达式4+0.5值的数据类型
Feb 26 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python数据结构之线性表的顺序存储结构
2018/09/28 Python
200行python代码实现2048游戏
2019/07/17 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
在什么时候需要使用"常引用"
2015/12/31 面试题
食堂个人先进事迹
2014/01/22 职场文书
高中家长寄语
2014/04/02 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
煤矿安全生产月活动总结
2014/07/05 职场文书
美术专业自荐信
2014/07/07 职场文书
人力资源部岗位职责
2015/02/11 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android