進(jìn)度條 alive_progress
alive_progress一個及其優(yōu)秀的進(jìn)度條開源工具痘番,支持暫停和打斷動畫女阀,在多線程多進(jìn)程的程序也可以正常使用氛改。進(jìn)度條樣式很多亮蛔,自定義程度也很高舔痪。
1 alive_bar
1.1 參數(shù)說明
alivez_bar
是針對進(jìn)度條的使用方式司倚,參數(shù)說明如下:
def alive_bar(total=None, *, calibrate=None, **options)
- total:總?cè)蝿?wù)數(shù)量
- calibrate:動畫的幀率,越小幀率越高媚媒,一般用默認(rèn)的就可以
**options是進(jìn)度條的可選項(xiàng)嗜逻,里面選項(xiàng)的寫法和函數(shù)參數(shù)寫法一樣。說明如下:
① 外觀類
- title(string):進(jìn)度條開頭的標(biāo)題
- length(int):渲染進(jìn)度條的長度
- spinner (Union[None, str, object]):進(jìn)度條旁邊等待動畫的渲染主題樣式缭召。類型包括主題名稱(spinner)字符串栈顷,或自定義主題。(主題樣式將在之后演示)
- bar (Union[None, str, object]):進(jìn)度條主題樣式嵌巷。包括主題名稱(bar)字符串萄凤,或自定義主題。(主題樣式將在之后演示)
- theme (str):主題樣式晴竞,一個同時設(shè)置bar和spinner的主題蛙卤。(主題樣式將在之后演示)
- title_length (int):強(qiáng)制標(biāo)題長度,超過則忽略多余部分并顯示一個省略號
- spinner_length (int):強(qiáng)制等待動畫的長度,建議默認(rèn)
② 控制類
- ctrl_c (bool):在終端使用Ctrl+C終止程序后颤难,是否在結(jié)尾輸出終止錯誤
- disable (bool):是否禁用進(jìn)度條
- enrich_print (bool):在進(jìn)度內(nèi)使用print時神年,若為是則實(shí)時輸出,若為否則在結(jié)束后一次性輸出
- force_tty (Optional[int|bool]):是否在不能渲染和抓取log的終端中強(qiáng)制渲染行嗤,建議默認(rèn)自動識別
- receipt (bool):是否在進(jìn)度結(jié)束后保留進(jìn)度條的結(jié)果
- receipt_text (bool):在進(jìn)度結(jié)束后是否繼續(xù)保留進(jìn)度條的描述信息
- refresh_secs (int):強(qiáng)制規(guī)定刷新的周期已日,建議使用默認(rèn)就好
③ 文本類
- dual_line (bool):是否將進(jìn)度條描述信息顯示在第二行
-
monitor (bool|str):設(shè)置進(jìn)度監(jiān)視器的文本樣式(默認(rèn)
152/200 [76%]
)。設(shè)置的書寫格式:
{count}/{total} [{percent}%]
-
elapsed (bool|str):設(shè)置計(jì)時器的文本樣式(默認(rèn)
in 12s
)栅屏。設(shè)置的書寫格式:in {elapsed}s
-
stats (bool|str):設(shè)置進(jìn)度速度的文本樣式(
(123.4/s, eta: 12s)
)飘千。設(shè)置的書寫格式:
{rate}, eta: {eta}
- monitor_end (bool|str)、elapsed_end (bool|str)栈雳、stats_end (bool|str):在進(jìn)度條結(jié)束時顯示這些布局的樣式护奈,書寫方式與上述相同
1.2 使用例子
1. 帶print和log信息的進(jìn)度條
其中,bar()
默認(rèn)走一個進(jìn)度哥纫,如果寫bar(num)
霉旗,則走num
個進(jìn)度
2. 進(jìn)度條在少于、等于蛀骇、大于任務(wù)數(shù)以及未知(unknown)時的表現(xiàn)
2 alive_it
2.1 參數(shù)使用
def alive_it(it, total=None, *, finalize=None, calibrate=None, **options)
- it:迭代變量
- finalize:當(dāng)進(jìn)度結(jié)束時執(zhí)行的函數(shù)
- 其他的和
alive_bar
一致
2.2 使用例子
1. 直接以迭代器的的for循環(huán)方式寫出
for i in alive_it(range(10), title='test'):
# code
pass
2. 以變量的循環(huán)方式寫出
若想使用在進(jìn)度條內(nèi)的說明厌秒,需要在類內(nèi)的屬性bar.text
進(jìn)行設(shè)置
bar = alive_it(range(100), receipt=False)
for i in bar:
bar.text = f' ->Wow, it works!'
time.sleep(0.02)