標籤:

Python · 進度條

(這裡是本章會用到的 GitHub 地址)

我實現的這個進度條可能是可以當做一個第三方庫來使用的(這個人好自大,嘖),它支持記錄並發程序的進度且損耗基本只來源於 Python 本身

先來看看我們的進度條長啥樣:

它有一個名字(「Test」)、有總任務數和已完成任務數、有總耗時和單個任務平均耗時、還有一個「進度條」。所有這些在整個程序運行過程中都是在一行內輸出的、也就是說它不會產生多行輸出(如果屏幕夠寬的話)。所有任務完成後,進度條會變為:

大體上來說功能還算完備。雖說看上去可能有點厲害,其實最核心的實現只用到了這個功能:

  • print("
    " + "xxx", end=""):這樣的話會先把 console 裡面當前的行清除掉、再輸出 xxx

剩下的就都是各種封裝了。我打算只說一個實現的大致思路、然後講講怎麼去調用這個進度條

實現的大綱大概如下:

  • 要記錄任務開始時的已完成的任務數和未完成的任務數
  • 要定義一個計數器,記錄著總共已完成的任務數
  • 要定義一個 start 函數和一個 update 函數作為介面
  • 要定義一個 _flush 函數來控制輸出流

調用的方法:

def task(): x = 0 for _ in range(10 ** 6): x = 0 return xif __name__ == "__main__": n = 100 bar = ProgressBar(max_value=n, name="Test") bar.start() for i in range(n): task() bar.update()

Done!運行效果就是上面那兩張圖

這章有點水(你居然有自知之明)、主要是想幫一下平時會用 Python 運行大程序卻又暫時苦於無法得知進度的觀眾老爺們(雖然這部分觀眾老爺可能都知道怎麼實現進度條……)。進度條通常來說可以用在爬蟲或機器學習中,我實現的神經網路裡面就用到了它

希望觀眾老爺們能夠喜歡~

推薦閱讀:

Spark SQL你不得不知道的那些事兒
Python實現Zip文件的暴力破解
Python篇-多進程與協程的理解與使用
如何踏上人工智慧之路(機器學習篇)
【強烈推薦】十三個鮮為人知的大數據學習網站

TAG:Python |