Python中進度條的實現(tqdm)

2021-09-25 11:18:11 字數 1400 閱讀 6589

最近弄cv的時候經常會需要檢視資料生成的進度或者是處理的進度,使用tqdm可以很好的通過進度條視覺化整個程序,使用起來也十分方便,其封裝得已經十分完整,在這裡記錄一下經驗,供以後檢視。

官方github文件(

在這種方式下,只需要將所有可迭代物件用tqdm()封裝起來即可。一般與for迴圈連用。

如:

from tqdm import tqdm

sum = 0

iter = [1, 2, 3, 4, 5, 6, 7, 8]

for elem in tqdm(iter):

sum = sum + elem

結果如下:

值得注意的,對於數值迭代,可以使用trange()模組,效果等於tqdm(range(i))

手動方式使用上下文管理器會更加方便:

with tqdm(total=100) as pbar:

for i in range(10):

pbar.update(10)

這種方法可以在你需要的地方對進度條增加特定的數值,更加靈活。

當然,也可以不使用上下文管理器,但是這樣我就需要在使用完之後,呼叫tqdm物件的close方法,防止不必要的資源占用。

在命令列中,tqdm可以放入任何操作中,它會經過該程序所有的標準輸入與輸出stdin&stdout,直至程序結束。這時候,就可以輕鬆檢視任何任務的進度包括像查詢啊,解壓縮一類的。

這裡引用幾個官方的例子:

$ time find . -name '*.py' -type f -exec cat \{} \; | tqdm | wc -l

857366it [00:03, 246471.31it/s]

857365

real 0m3.585s

user 0m0.862s

sys 0m3.358s

根據引數可以顯示進度條:

$ find . -name '*.py' -type f -exec cat \{} \; |

tqdm --unit loc --unit_scale --total 857366 >> /dev/null

100%|███████████████████████████████████| 857k/857k [00:04<00:00, 246kloc/s]

Android中進度條

首頁xml中 其中style屬性設定進度條的樣式 如上面設定的進度條為水平的進度條 若不設定預設為圓形進度條。style android style widget.progressbar.small 設定進度的大小如下截圖 還有一種對話方塊進度條progressdialog 在button監聽事件裡...

Winform中進度條

using system.threading 引入命名空間 thread thread null 其次宣告乙個執行緒物件 public delegate void delsetpro intpros 宣告乙個委託物件 設定進度條內容 漸變的值 private void setprocontent i...

SWING中進度條的問題

由於swing中,程式的執行都是單執行緒的形式,因此碰到有關進度條的問題時,進度條並不會 隨著程式動態改變,而是等程式執行完之後,一次呈現出來,也就是一次性的填充完整個進 度條。究其原因 swing程式本身是乙個線程式,而進度條是另乙個執行緒,本身執行完之後,才會執行進度條的這個程序。怎樣解決這個問...