Python for 语句 进度条 python进度条程序_Python for 语句 进度条

点击上方蓝色字体,关注我们

在项目开发过程中加载、启动、下载项目难免会用到进度条,如何使用Python实现进度条呢?

这里为小伙伴们分享四种Python实现进度条的库:Progress库、tqdm库、alive-progress库和PySimpleGUI库,其中前三个是文本进度条库,最后一个是可以在GUI上运行的进度条。

1

Progress库

Progress是一种文本进度条库,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示:

pip install progressbar2

实现总耗时1S的进度条 ,代码如下所示:

import timeimport progressbarp = progressbar.ProgressBar()N = 10# 加上进度,就是将range(N)放到ProgressBar()中for i in p(range(N)):    #每次延时0.1S    time.sleep(0.1)

效果如下所示:

Python for 语句 进度条 python进度条程序_python 进度条_02

还可以设置为中文提示,代码如下所示:

import timeimport progressbardef custom_len(value):    # These characters take up more space    characters = {        '进': 2,        '度': 2,    }    total = 0    for c in value:        total += characters.get(c, 1)    return totalbar = 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)

 效果如下所示:



Python for 语句 进度条 python进度条程序_迭代_03

2

tqdm库

tqdm库消耗资源很低,每次迭代大约60ns(gui = True时为80ns),并且已针对性能下降进行了单元测试。完善的ProgressBar具有800ns / iter的开销,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示: 

pip install tqdm

实现总耗时1S的进度条 ,代码如下所示:

import timefrom tqdm import tqdmfrom tqdm._tqdm import trangeN = 10for i in tqdm(range(N)):    time.sleep(0.1)

效果如下所示:



Python for 语句 进度条 python进度条程序_进度条_04

不仅如此, tqdm库在实现进度条的同时还可以遍历迭代的对象,做到高效率工作,例如遍历列表["a", "b", "c", "d"]的同时实现进度条,代码如下所示:

from tqdm import tqdmimport timetext = ""for char in tqdm(["a", "b", "c", "d"]):    time.sleep(0.1)    text = text + charprint(text)

 效果如下所示: 

Python for 语句 进度条 python进度条程序_Python for 语句 进度条_05

3

alive-progress库

alive-progress库是一种具有动态效果的智能进度条,库详细说明参加GitHub。

使用库之前需要进行安装,pip指令如下所示: 

pip install alive-progress

实现总耗时10S的动态效果进度条 ,代码如下所示:

from alive_progress import alive_barimport timeitems = range(10)                  # retrieve your set of itemswith 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)

 效果如下所示: 



Python for 语句 进度条 python进度条程序_迭代_06

4

PySimpleGUI库

 PySimpleGUI库是基于Tkinter、Remi、wxPython和PyQt库GUI库,我们可以基于它实现在GUI中添加进度条,当然这只是抛砖引玉,小伙伴们可以使用自己喜爱的GUI库实现进度条设计,库详细说明参加GitHub。

 使用库之前需要进行安装,pip指令如下所示: 

pip install pysimplegui

实现总耗时10S的动态GUI效果进度条 ,代码如下所示:

import PySimpleGUI as sgimport timeitems = range(10)for i, item in enumerate(items):  sg.one_line_progress_meter('Progress Meter', i+1, len(items), '-key-')  time.sleep(1)

  效果如下所示: 



Python for 语句 进度条 python进度条程序_python 进度条_07

Python for 语句 进度条 python进度条程序_Python for 语句 进度条_08