社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

卧槽!Python竟然能做这样的进度条。。。。。

机器学习算法与Python学习 • 4 年前 • 560 次点击  



点击 机器学习算法与Python学习 选择加星标

精彩内容不迷路

机器之心编译

选自towardsdatascience 作者:Costas Andreou


如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然。要加一个进度条其实只需要几行代码。在这几行代码中,我们可以看看如何在命令行脚本以及 PySimpleGUI UI 中添加进度条。

下文将介绍 4 个常用的 Python 进度条库:


Progress


第一个要介绍的 Python 库是 Progress。


你只需要定义迭代的次数、进度条类型并在每次迭代时告知进度条。
import timefrom progress.bar 
import IncrementalBarmylist = [1,2,3,4,5,6,7,8]
bar = IncrementalBar( Countdown , max = len(mylist))
for item in mylist: 
  bar.next() 
  time.sleep(1
  bar.finish()

Progress 实现的进度条效果如下:

Progressbar 的增量进度条


如果你不喜欢该进度条的格式,还可以从以下格式中挑选:


ProgressBar 支持的进度条类型。


相关文档:https://pypi.org/project/progress/1.5/


tqdm


下面我们看一下 tqdm 库。


和之前见过的库差不多,这两行代码也非常相似,在设置方面有一点点不同:
import timefrom tqdm 
import tqdmmylist = [1,2,3,4,5,6,7,8]
for i in tqdm(mylist): 
  time.sleep(1)

tqdm 实现的进度条效果如下:


这个进度条也提供了几种选项。


相关文档:https://tqdm.github.io/


Alive Progress


顾名思义,这个库可以使得进度条变得生动起来,它比原来我们见过的进度条多了一些动画效果。



从代码角度来说比较相似:
from alive_progress import alive_barimport 
timemylist = [1,2,3,4,5,6,7,8]
with alive_bar(len(mylist)) as bar: 
  for i in mylist: 
    bar() 
    time.sleep(1)

进度条的外观和预期差不多:



这种进度条有一些与众不同的功能,使用起来会比较有趣,功能详情可见项目:https://github.com/rsalmei/alive-progress


PySimpleGUI


用 PySimpleGUI 得到图形化进度条


我们可以加一行简单的代码,在命令行脚本中得到图形化进度条。



为了实现上述内容,我们需要的代码是:
import PySimpleGUI as sgimport 
timemylist = [1,2,3,4,5,6,7,8]
for i, item in enumerate(mylist): 
  sg.one_line_progress_meter( This is my progress meter! , i+1, len(mylist),  -key-
  time.sleep(1)

PySimpleGUI 应用程序中的进度条

项目作者之前曾经在 GitHub 上讨论过「如何快速启动 Python UI,然后使用 UI 创建比较工具」。在这个项目里,作者还讨论了一下如何集成进度条。



代码如下:
import PySimpleGUI as sgimport 
timemylist = [1,2,3,4,5,6,7 ,8]
progressbar = [ [sg.ProgressBar(len(mylist), orientation= h , size=(5110), key= progressbar )]]
outputwin = [ [sg.Output(size=(78,20))]]
layout = [ [sg.Frame( Progress ,layout= progressbar)], [sg.Frame( Output , layout = outputwin)], [sg.Submit( Start ),sg.Cancel()]]
window = sg.Window( Custom Progress Meter , layout)
progress_bar = window[ progressbar while True
  event, values = window.read(timeout=10
  if event ==  Cancel  or event is None
    break 
  elif event ==  Start
    for i,item in enumerate(mylist): 
      print(item) 
      time.sleep(1
      progress_bar.UpdateBar(i + 1)window.close()

没错,在 Python 脚本中使用进度条只需要几行代码,一点也不复杂。有了进度条,以后也不用再猜测脚本运行地怎么样了。
参考链接:
https://towardsdatascience.com/learning-to-use-progress-bars-in-python-2dc436de81e5

免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。




    

    你点的每个“在看”,我都认真当成了AI

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/106203
 
560 次点击