python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作
print函數(shù)
python輸出主要使用print函數(shù),print函數(shù)介紹:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
*objects表示要打印的值,表示多個(gè)無(wú)名參數(shù)或需要打印的值;
sep=' ',對(duì)應(yīng)上面要打印的值中間間隔,默認(rèn)一個(gè)空格;
end='\n',傳入值打印完后的結(jié)束符號(hào),默認(rèn)為換行符,可以自行設(shè)置;
file=sys.stdout,設(shè)置打印輸出參數(shù),默認(rèn)打印到終端,也可設(shè)置打印保存到文件;
flush=False,是否刷新打印結(jié)果。
一行輸出結(jié)果并刷新
在一行中顯示輸出結(jié)果,每次刷新,其中'\r'表示回到當(dāng)前的開(kāi)頭,end=''表示結(jié)束符為空,這樣就可以每次更新結(jié)果
import time
for i in range(15):
time.sleep(0.5) # 這里為了查看輸出變化,實(shí)際使用不需要sleep
print('\r', i, end='')
# print('\r', 15-i, end='') # 從兩位變一位會(huì)有問(wèn)題
上面代碼有個(gè)問(wèn)題,當(dāng)輸出i從大到小,有位數(shù)變化時(shí),結(jié)果不正確,可用format格式化輸出,可解決問(wèn)題:
import time
for i in range(15):
time.sleep(0.5)
print('\r', "{:d}".format(15-i), end='')
模型訓(xùn)練中l(wèi)oss和acc的刷新輸出
我們?cè)谟?xùn)練機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型中,總會(huì)隔一段時(shí)間輸出損失函數(shù)和準(zhǔn)確率,每次都直接print輸出,終端會(huì)輸出很多信息,這里用單行輸出并刷新的方法來(lái)輸出這些信息,我們?cè)O(shè)置epochs和batch的數(shù)量,每次batch輸出刷新,一個(gè)epoch完后同時(shí)輸出train和test的結(jié)果。
import time
# 設(shè)置epochs和batch的數(shù)量
epochs = 5
n_batch = 15
# 這里是測(cè)試自己設(shè)置的loss和acc
train_loss = 1.2345
train_acc = 0.345678
test_loss = 1.1234
test_acc = 0.235467
for i in range(epochs):
for j in range(n_batch):
time.sleep(0.5)
train_loss -= 0.001
train_acc += 0.0001
print("\rEpoch: {:d} batch: {:d} loss: {:.4f} acc: {:.4f} | {:.2%}"
.format(i+1, j+1, train_loss, train_acc, (j+1)*1.0/n_batch), end='')
test_loss -= 0.001
test_acc += 0.0001
print("\rEpoch: {:d}/{:d} train_loss: {:.4f} test_loss: {:.4f} train_acc: {:.4f} test_acc: {:.4f}"
.format(i+1, 5, train_loss, test_loss, train_acc, test_acc), end='\n')
這里注意,print里"Epoch"前面有一個(gè)"\r",這個(gè)必須要有,同時(shí)里面循環(huán)end='',外面循環(huán)end='\n',最終打印結(jié)果如下:

tqdm顯示進(jìn)度條
首先安裝tqdm:pip install tqdm
簡(jiǎn)單使用,讀取整數(shù),直接在tqdm中傳入一個(gè)list, 如果直接給定的是一個(gè)整數(shù),可以直接用trange
import time from tqdm import tqdm, trange for i in tqdm(range(100)): time.sleep(0.05) # do something # for i in trange(100): # time.sleep(0.05) # # do something
顯示結(jié)果如下,顯示有百分比,以及當(dāng)前處理到多少個(gè)

tdqm輸入的list可以是字符串,也可以對(duì)輸出進(jìn)度條加一些描述
import time
from tqdm import tqdm
pbar = tqdm(["a", "b", "c", "d", "e"])
for char in pbar:
time.sleep(0.8)
pbar.set_description("Processing %s" % char)
# pbar.set_description("Processing {0}".format(char))

以上這篇python輸出結(jié)果刷新及進(jìn)度條的實(shí)現(xiàn)操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python+selenium開(kāi)發(fā)環(huán)境搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了python+selenium開(kāi)發(fā)環(huán)境搭建的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
django 外鍵創(chuàng)建注意事項(xiàng)說(shuō)明
這篇文章主要介紹了django 外鍵創(chuàng)建注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
淺談Python任務(wù)自動(dòng)化工具Tox基本用法
這篇文章主要介紹了淺談Python任務(wù)自動(dòng)化工具Tox,tox 是一個(gè)管理測(cè)試虛擬環(huán)境的命令行工具, 它已存在多年且廣被開(kāi)發(fā)者們使用,對(duì)Python任務(wù)自動(dòng)化工具Tox基本用法感興趣的朋友一起看看吧2022-06-06
Python微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動(dòng)返回消息示例
這篇文章主要介紹了Python微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動(dòng)返回消息的方法,涉及Python微信企業(yè)號(hào)回調(diào)模式消息響應(yīng)機(jī)制相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Python實(shí)現(xiàn)獲取當(dāng)前目錄下文件名代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)獲取當(dāng)前目錄下文件名,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python mongo 向數(shù)據(jù)中的數(shù)組類型新增數(shù)據(jù)操作
這篇文章主要介紹了python mongo 向數(shù)據(jù)中的數(shù)組類型新增數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12

