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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
Python 基础知识之字符串处理
Jan 06 Python
对python3 urllib包与http包的使用详解
May 10 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python求解正态分布置信区间教程
Nov 20 Python
Python无头爬虫下载文件的实现
Apr 02 Python
Python restful框架接口开发实现
Apr 13 Python
Python实现异步IO的示例
Nov 05 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 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
自己做矿石收音机
2021/03/02 无线电
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php网页病毒清除类
2014/12/08 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
javascript radio 联动效果
2009/03/04 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python 自动化表单提交实例代码
2017/06/08 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Linux的文件类型
2012/03/07 面试题
小学生自我鉴定
2013/10/12 职场文书
热门专业求职信
2014/05/24 职场文书
大跃进口号
2014/06/16 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书