自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾行代碼就能實(shí)現(xiàn)漂亮進(jìn)度條,太贊了!

開(kāi)發(fā) 后端
作為程序員,我們經(jīng)常會(huì)遇到比較耗時(shí)的操作,這個(gè)時(shí)候我們大多數(shù)人會(huì)無(wú)助地等待程序執(zhí)行完成,有些人會(huì)趁機(jī)摸一下魚(yú),以便渡過(guò)這個(gè)無(wú)聊看起來(lái)又有點(diǎn)未知的時(shí)間,我就是這樣做的。

[[438028]]

本文轉(zhuǎn)載自微信公眾號(hào)「Python技術(shù)」,作者派森醬。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python技術(shù)公眾號(hào)。

作為程序員,我們經(jīng)常會(huì)遇到比較耗時(shí)的操作,這個(gè)時(shí)候我們大多數(shù)人會(huì)無(wú)助地等待程序執(zhí)行完成,有些人會(huì)趁機(jī)摸一下魚(yú),以便渡過(guò)這個(gè)無(wú)聊看起來(lái)又有點(diǎn)未知的時(shí)間,我就是這樣做的。

但是,我們也可以選擇另一種方式——用一個(gè)炫酷的進(jìn)度條,來(lái)觀察處理進(jìn)度,也可以及時(shí)了解程序運(yùn)行的情況,做到心中有數(shù)。

今天就給大家介紹 Python 的一個(gè)庫(kù)—— tqdm ,它就能非常完美的支持和解決這些問(wèn)題,可以實(shí)時(shí)輸出處理進(jìn)度而且占用的CPU資源非常少,支持windows、Linux、mac等系統(tǒng),支持循環(huán)處理、多進(jìn)程、遞歸處理、還可以結(jié)合linux的命令來(lái)查看處理情況,等進(jìn)度展示。

安裝

我們常見(jiàn)的安裝方式是直接 pip 安裝:

  1. pip install tqdm 

但是我用這種方式安裝的時(shí)候報(bào)錯(cuò):

看報(bào)錯(cuò)的意思是這個(gè) pypi.org 不是可信網(wǎng)站,于是我加上了:

  1. pip install tqdm --trusted-host pypi.org 

結(jié)果還是這個(gè)報(bào)錯(cuò)。

這有點(diǎn)無(wú)語(yǔ)了。我接著嘗試使用豆瓣的源來(lái)進(jìn)行安裝:

  1. pip install -i https://pypi.douban.com/simple tqdm 

還是一樣的報(bào)錯(cuò)。

但是我瀏覽器訪問(wèn)這個(gè)網(wǎng)站沒(méi)問(wèn)題:https://pypi.org/project/tqdm/

既然這樣,我就把文件下載下來(lái)再安裝吧。

下載下來(lái)之后,我將 whl 文件放在我的項(xiàng)目目錄,然后使用命令行安裝:

  1. pip install --trusted-host pypi.org tqdm-4.62.3-py2.py3-none-any.whl 

這回安裝沒(méi)報(bào)錯(cuò)。我再用命令檢查一下安裝是否成功:

  1. pip show tqdm 

命令行成功顯示信息:

  1. Name: tqdm 
  2. Version: 4.62.3 
  3. Summary: Fast, Extensible Progress Meter 
  4. Home-page: https://tqdm.github.io 
  5. Author: None 
  6. Author-email: None 
  7. License: MPLv2.0, MIT Licences 
  8. Location: c:\pworkspace\mypy\venv\lib\site-packages 
  9. Requires: colorama 
  10. Required-by

折騰了半天,終于安裝成功了!

使用實(shí)例

本文的示例都是在 jupyter notebook 環(huán)境下運(yùn)行的,不同環(huán)境運(yùn)行的效果會(huì)有差別。

我們進(jìn)入 tqdm 的源碼,可以找到 __init__ 方法:

  1. def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None, 
  2.              ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None, 
  3.              ascii=None, disable=False, unit='it', unit_scale=False
  4.              dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0, 
  5.              position=None, postfix=None, unit_divisor=1000, write_bytes=None, 
  6.              lock_args=None, nrows=None, colour=None, delay=0, gui=False
  7.              **kwargs): 

從中我們可以看到 tqdm 支持很多參數(shù),下面列一些常見(jiàn)的參數(shù):

  • iterable:可迭代的對(duì)象,在手動(dòng)更新時(shí)不需要進(jìn)行設(shè)置。
  • desc:字符串,左邊進(jìn)度條描述文字。
  • total:總的項(xiàng)目數(shù)。
  • leave:布爾值,迭代完成后是否保留進(jìn)度條。
  • file:輸出指向位置,默認(rèn)是終端, 一般不需要設(shè)置。
  • ncols:調(diào)整進(jìn)度條寬度,默認(rèn)是根據(jù)環(huán)境自動(dòng)調(diào)節(jié)長(zhǎng)度,如果設(shè)置為0,就沒(méi)有進(jìn)度條,只有輸出的信息。
  • unit:描述處理項(xiàng)目的文字,默認(rèn)是'it',例如: 100 it/s,處理照片的話設(shè)置為'img' ,則為 100 img/s。
  • unit_scale:自動(dòng)根據(jù)國(guó)際標(biāo)準(zhǔn)進(jìn)行項(xiàng)目處理速度單位的換算,例如 100000 it/s >> 100k it/s。

基于可迭代對(duì)象使用

直接將可迭代對(duì)象傳入作為參數(shù),我們來(lái)看一下例子:

  1. from tqdm import tqdm 
  2. from time import sleep 
  3.  
  4. for char in tqdm(['h''e''l''l''o']): 
  5.     sleep(0.25) 
  6.  
  7. for i in tqdm(range(100)): 
  8.     sleep(0.05) 

實(shí)現(xiàn)的進(jìn)度條效果如下:

這里面的 tqdm(range()) 我們也可以用 tqdm 提供的 trange() 來(lái)代替,可以簡(jiǎn)化代碼。

  1. from tqdm.notebook import trange 
  2.  
  3. for i in trange(100): 
  4.     sleep(0.05) 

實(shí)現(xiàn)的進(jìn)度條效果如下:

我們還可以為進(jìn)度條添加描述:

  1. pbar = tqdm(range(5)) 
  2. for char in pbar: 
  3.     pbar.set_description("Progress %d" %char
  4.     sleep(1) 

實(shí)現(xiàn)的進(jìn)度條效果如下:

接下來(lái),我要改變一下進(jìn)度條的顏色:

手動(dòng)控制進(jìn)度條

我們可以使用 with 語(yǔ)句來(lái)手動(dòng)控制進(jìn)度條。

  1. with tqdm(total=100) as pbar: 
  2.     for i in range(1, 5): 
  3.         sleep(1) 
  4.         # 更新進(jìn)度 
  5.         pbar.update(10*i) 

這里我設(shè)置進(jìn)度條的更新的間隔,設(shè)置總數(shù)為 total=100,然后分四次,使得進(jìn)度條按 10%,20%,30%,40%的間隔來(lái)更新。

實(shí)現(xiàn)的進(jìn)度條效果如下:

接下來(lái), 我要改變一下進(jìn)度條的顏色:

  1. with tqdm(total=100, colour='yellow'as pbar: 
  2.     for i in range(1, 5): 
  3.         sleep(1) 
  4.         # 更新進(jìn)度 
  5.         pbar.update(10*i) 

我把進(jìn)度條改為了黃色。

接下來(lái),我們來(lái)個(gè)嵌套進(jìn)度條玩玩。

  1. for i in trange(3, desc='outer loop'): 
  2.     for i in trange(100, desc='inner loop', leave=False): 
  3.         sleep(0.01) 

這里我用兩層 for 循環(huán)實(shí)現(xiàn)了嵌套,并且將內(nèi)層的 參數(shù) leave 設(shè)置為 False ,意思是內(nèi)層的進(jìn)度條每執(zhí)行一次都會(huì)消失。

我們來(lái)看看最終運(yùn)行的效果:

總結(jié)

這個(gè)進(jìn)度條庫(kù)的使用方法是不是很簡(jiǎn)單,幾行代碼就能為我們的程序增色不少。心動(dòng)不如行動(dòng),趕快用起來(lái)吧!

 

責(zé)任編輯:武曉燕 來(lái)源: Python技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)