【Python】給程序加個進度條


對於開發或者運維來說,使用 Python 去完成一些跑批任務,或者做一些監控事件是非常正常的情況。那么如何有效地監控任務的進度?除了在任務中加上 Log 外,還能不能有另一種方式來了解任務進展到哪一步了呢?

這就是今天我們來了解的內容——進度條。

標准輸出

首先說一下在操作系統中,都有哪些控制符:

  • \r: 將光標移動到當前行的首位而不換行;

  • \n:將光標移動到下一行,並不移動到首位;

  • \r\n:將光標移動到下一行首位。

那讓我們來看下如何通過 Python 來將標准輸出中添加進度條吧。

import sys
import time
def progress_bar(total):
   """
   進度條效果
   """
   # 獲取標准輸出
   _output = sys.stdout
   # 通過參數決定你的進度條總量是多少
   for count in range(0, total + 1):
       # 這里的second只是作為工作量的一種代替
       # 這里應該是有你的主程序,main()
       _second = 0.1
       # 模擬業務的消耗時間
       time.sleep(_second)
       # 輸出進度條
       _output.write(f'\rcomplete percent:{count:.0f}')
   # 將標准輸出一次性刷新
   _output.flush()
progress_bar(100)

來看下實際效果:

 

Tqdm 模塊

Tqdm 是一個快速、擴展性強的進度條工具庫,它提供了非常多的接口,有興趣的小伙伴可以了解一下。

GitHub 地址是:https://github.com/tqdm/tqdm。

我們來看下,如何使用 Tqdm 模塊來實現進度條。

1. 首先是安裝,非常簡單。

pip install tqdm

2. 接下來就是具體的操作。

from time import sleep
from tqdm import tqdm
# 這里同樣的,tqdm就是這個進度條最常用的一個方法
# 里面存一個可迭代對象
for i in tqdm(range(1, 500)):
   # 模擬你的任務
   sleep(0.01)

是不是看到這里發現,Tqdm 非常的簡單呢?這只是一個例子,它也可以非常的復雜,同時也支持多線程、多進程,還有 Pandas。

來一個多進程的感受下吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM