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实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
Python爬虫天气预报实例详解(小白入门)
Jan 24 Python
详解python字节码
Feb 07 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python常用模块之requests模块用法分析
May 15 Python
简单了解python高阶函数map/reduce
Jun 28 Python
python读写csv文件实例代码
Jul 05 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 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
PHP4中实现动态代理
2006/10/09 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
JS实现二维数组横纵列转置的方法
2018/04/17 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python 元类实例解析
2018/04/04 Python
django的登录注册系统的示例代码
2018/05/14 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
Python定时器线程池原理详解
2020/02/26 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
开办大学饮食联盟创业计划书
2014/01/29 职场文书
风险评估实施方案
2014/03/09 职场文书
学校招生宣传广告词
2014/03/19 职场文书
2014年党总支工作总结
2014/12/18 职场文书
廉政承诺书
2015/01/19 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
纪录片信仰观后感
2015/06/08 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书