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之不要红头文件(1)
Sep 28 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
Python集合操作方法详解
Feb 09 Python
Python短信轰炸的代码
Mar 25 Python
Pytorch 图像变换函数集合小结
Feb 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
智利最大的网上商店:Linio智利
2016/11/24 全球购物
实习生自荐信范文分享
2013/11/27 职场文书
考博专家推荐信模板
2013/12/02 职场文书
司马光教学反思
2014/02/01 职场文书
员工团队活动方案
2014/08/28 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
人事专员岗位职责
2015/02/03 职场文书
锦旗赠语
2015/06/23 职场文书
2015年暑期见闻
2015/07/14 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python