最近,我真的好喪。一些有截止日期的事情,都是拖到Deadline的前一天才草草了事;對(duì)于那些沒有截至日期的事情,更是僅僅存在腦子里,徒增了焦慮,卻遲遲沒有動(dòng)手。不幸中的萬幸,我漸漸地培養(yǎng)了讀書的習(xí)慣。為了克服自己拖延的癥狀,我讀了一些習(xí)慣養(yǎng)成的書籍,而這些書基本上都提到了這樣一個(gè)思路。把大的事情“拆”成一件件小的事情,把困難的事情“拆”成一件件容易的事情。比如,我想去跑步。那我就可以把跑步“拆”分成以下幾個(gè)步驟:1)換上準(zhǔn)備運(yùn)動(dòng)的裝備(運(yùn)動(dòng)褲、運(yùn)動(dòng)鞋)2)走到運(yùn)動(dòng)的地方(告訴自己就是出去散散步)在沒有“拆”之前,事情只有兩個(gè)狀態(tài)“完成”和“未完成”,這樣只有在進(jìn)度完成100%的時(shí)候才可以看到結(jié)果;事情被“拆”分之后,就轉(zhuǎn)化為一件件可以做到的具體事情;我們每完成一小部分,就會(huì)有一種掌控全局的感覺,也更容易促進(jìn)整個(gè)進(jìn)度條的完成。運(yùn)行的程序也是如此,沒有可視化進(jìn)度,我們只能苦苦等待最終的完成,這樣確實(shí)容易人焦躁不安。有了進(jìn)度條,我們就可以時(shí)時(shí)掌握程序運(yùn)行的進(jìn)度,可以讓人心里踏實(shí)。那么,怎么用 Python 給程序加個(gè)進(jìn)度條呢?1、使用time模塊,結(jié)合python的基礎(chǔ)語法(循環(huán)、條件判斷、字符串格式化)設(shè)計(jì)進(jìn)度條 import time
for i in range(0, 101, 2): time.sleep(0.1) num = i // 2 if i == 100: # 字符串格式化 # %3s——右對(duì)齊,占位符3位 %有特殊含義:想要打印%,使用%%表示 # %-50s——左對(duì)齊,占位符50位 # \r 回車 \n 換行 process = '\r[%3s%%]: |%-50s|\n' % (i, '|' * num) else: process = '\r[%3s%%]: |%-50s|' % (i, '|' * num) print(process, end='', flush=True)
sys.stdout.flush():立即刷新輸出的內(nèi)容 sys.stdout.write():打印不換行 print()方法:打印換行 import sys, time
print('正在下載......') for i in range(11): if i != 10: sys.stdout.write('==') else: sys.stdout.write('== ' + str(i * 10) + '%/100%') sys.stdout.flush() time.sleep(0.2) print('\n' + '下載完成')
tqdm第三方模塊(可使用pip進(jìn)行安裝)可以實(shí)時(shí)輸出處理進(jìn)度,占用的CPU資源非常少; 支持windows、Linux、mac等系統(tǒng),支持循環(huán)處理、多進(jìn)程、遞歸處理; 還可以結(jié)合linux的命令來查看處理情況,等進(jìn)度展示。 from time import sleep from tqdm import tqdm
for i in tqdm(range(20)): sleep(0.5)
Python Progressbar模塊(pip安裝)提供基于文本的可視化進(jìn)度條,通常用在顯示下載進(jìn)度、顯示任務(wù)的執(zhí)行進(jìn)度等等。import time from progressbar import *
progress = ProgressBar() for i in progress(range(1000)): time.sleep(0.01)
5、alive-progress 擴(kuò)展庫alive-progress擴(kuò)展庫(pip安裝)是一種具有動(dòng)態(tài)效果的智能進(jìn)度條from alive_progress import alive_bar import time items = range(10) # retrieve your set of items with 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)
程序中的進(jìn)度條可以讓程序更炫酷,可以顯示下載進(jìn)度、顯示任務(wù)的執(zhí)行進(jìn)度;生活中的進(jìn)度條可以讓我們對(duì)整個(gè)目標(biāo)的重要步驟有清晰地界定,減少對(duì)未知的恐懼。一切都會(huì)好起來的吧。
|