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è)無名參數(shù)或需要打印的值;
sep=’ ’,對應(yīng)上面要打印的值中間間隔,默認(rèn)一個(gè)空格;
end=’n’,傳入值打印完后的結(jié)束符號,默認(rèn)為換行符,可以自行設(shè)置;
file=sys.stdout,設(shè)置打印輸出參數(shù),默認(rèn)打印到終端,也可設(shè)置打印保存到文件;
flush=False,是否刷新打印結(jié)果。
一行輸出結(jié)果并刷新
在一行中顯示輸出結(jié)果,每次刷新,其中’r’表示回到當(dāng)前的開頭,end=’’表示結(jié)束符為空,這樣就可以每次更新結(jié)果
import timefor i in range(15): time.sleep(0.5) # 這里為了查看輸出變化,實(shí)際使用不需要sleep print(’r’, i, end=’’) # print(’r’, 15-i, end=’’) # 從兩位變一位會(huì)有問題
上面代碼有個(gè)問題,當(dāng)輸出i從大到小,有位數(shù)變化時(shí),結(jié)果不正確,可用format格式化輸出,可解決問題:
import timefor i in range(15): time.sleep(0.5) print(’r’, '{:d}'.format(15-i), end=’’)
模型訓(xùn)練中l(wèi)oss和acc的刷新輸出
我們在訓(xùn)練機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型中,總會(huì)隔一段時(shí)間輸出損失函數(shù)和準(zhǔn)確率,每次都直接print輸出,終端會(huì)輸出很多信息,這里用單行輸出并刷新的方法來輸出這些信息,我們設(shè)置epochs和batch的數(shù)量,每次batch輸出刷新,一個(gè)epoch完后同時(shí)輸出train和test的結(jié)果。
import time# 設(shè)置epochs和batch的數(shù)量epochs = 5n_batch = 15# 這里是測試自己設(shè)置的loss和acctrain_loss = 1.2345train_acc = 0.345678test_loss = 1.1234test_acc = 0.235467for 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
簡單使用,讀取整數(shù),直接在tqdm中傳入一個(gè)list, 如果直接給定的是一個(gè)整數(shù),可以直接用trange
import timefrom tqdm import tqdm, trangefor 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可以是字符串,也可以對輸出進(jìn)度條加一些描述
import timefrom tqdm import tqdmpbar = 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)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 詳解CSS偽元素的妙用單標(biāo)簽之美2. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁的方法3. HTML5 Canvas繪制圖形從入門到精通4. XHTML 1.0:標(biāo)記新的開端5. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究6. 利用CSS3新特性創(chuàng)建透明邊框三角7. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼8. ASP基礎(chǔ)知識VBScript基本元素講解9. JSP的Cookie在登錄中的使用10. XML入門的常見問題(四)
