进度条 alive_progress
alive_progress一个及其优秀的进度条开源工具,支持暂停和打断动画,在多线程多进程的程序也可以正常使用。进度条样式很多,自定义程度也很高。
1 alive_bar
1.1 参数说明
alivez_bar
是针对进度条的使用方式,参数说明如下:
def alive_bar(total=None, *, calibrate=None, **options)
- total:总任务数量
-
calibrate:动画的帧率,越小帧率越高,一般用默认的
就可以
**options是进度条的可选项,里面选项的写法和函数参数写法一样。说明如下:
① 外观类
- title(string):进度条开头的标题
- length(int):渲染进度条的长度
- spinner (Union[None, str, object]):进度条旁边等待动画的渲染主题样式。类型包括主题名称(spinner)字符串,或自定义主题。(主题样式将在之后演示)
- bar (Union[None, str, object]):进度条主题样式。包括主题名称(bar)字符串,或自定义主题。(主题样式将在之后演示)
- theme (str):主题样式,一个同时设置bar和spinner的主题。(主题样式将在之后演示)
- title_length (int):强制标题长度,超过则忽略多余部分并显示一个省略号
- spinner_length (int):强制等待动画的长度,建议默认
② 控制类
- ctrl_c (bool):在终端使用Ctrl+C终止程序后,是否在结尾输出终止错误
- disable (bool):是否禁用进度条
- enrich_print (bool):在进度内使用print时,若为是则实时输出,若为否则在结束后一次性输出
- force_tty (Optional[int|bool]):是否在不能渲染和抓取log的终端中强制渲染,建议默认自动识别
- receipt (bool):是否在进度结束后保留进度条的结果
- receipt_text (bool):在进度结束后是否继续保留进度条的描述信息
- refresh_secs (int):强制规定刷新的周期,建议使用默认就好
③ 文本类
- dual_line (bool):是否将进度条描述信息显示在第二行
-
monitor (bool|str):设置进度监视器的文本样式(默认
152/200 [76%]
)。设置的书写格式:
{count}/{total} [{percent}%]
-
elapsed (bool|str):设置计时器的文本样式(默认
in 12s
)。设置的书写格式:in {elapsed}s
-
stats (bool|str):设置进度速度的文本样式(
(123.4/s, eta: 12s)
)。设置的书写格式:
{rate}, eta: {eta}
- monitor_end (bool|str)、elapsed_end (bool|str)、stats_end (bool|str):在进度条结束时显示这些布局的样式,书写方式与上述相同
1.2 使用例子
1. 带print和log信息的进度条
其中,bar()
默认走一个进度,如果写bar(num)
,则走num
个进度
2. 进度条在少于、等于、大于任务数以及未知(unknown)时的表现
2 alive_it
2.1 参数使用
def alive_it(it, total=None, *, finalize=None, calibrate=None, **options)
- it:迭代变量
- finalize:当进度结束时执行的函数
- 其他的和
alive_bar
一致
2.2 使用例子
1. 直接以迭代器的的for循环方式写出
for i in alive_it(range(10), title='test'):
# code
pass
2. 以变量的循环方式写出
若想使用在进度条内的说明,需要在类内的属性bar.text
进行设置
bar = alive_it(range(100), receipt=False)
for i in bar:
bar.text = f' ->Wow, it works!'
time.sleep(0.02)