欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python進(jìn)度條tqdm使用方式

 更新時間:2024年02月26日 14:15:19   作者:雪的期許  
這篇文章主要介紹了python進(jìn)度條tqdm使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

安裝tqdm

tqdm是一個顯示進(jìn)度條的python工具包。

安裝命令如下:

conda install tqdm

pip install tqdm

在循環(huán)中顯示進(jìn)度條

from tqdm import tqdm, trange

1. 使用tqdm.tqdm()實現(xiàn)進(jìn)度條

示例:

for i in tqdm(range(20), desc='It\'s a test'):
    time.sleep(0.1)

2. tqdm()主要參數(shù)默認(rèn)值與解釋

  • iterable=None,可迭代對象。如上一節(jié)中的range(20) 
  • desc=None,傳入str類型,作為進(jìn)度條標(biāo)題。如上一節(jié)中的desc='It\'s a test' 
  • total=None,預(yù)期的迭代次數(shù)。一般不填,默認(rèn)為iterable的長度。 
  • leave=True,迭代結(jié)束時,是否保留最終的進(jìn)度條。默認(rèn)保留。 
  • file=None,輸出指向位置,默認(rèn)是終端,一般不需要設(shè)置。 
  • ncols=None,可以自定義進(jìn)度條的總長度 
  • unit,描述處理項目的文字,默認(rèn)’it’,即100it/s;處理照片設(shè)置為’img’,則為100img/s 
  • postfix,以字典形式傳入詳細(xì)信息,將顯示在進(jìn)度條中。例如postfix={'value': 520} 
  • unit_scale,自動根據(jù)國際標(biāo)準(zhǔn)進(jìn)行項目處理速度單位的換算,例如100000it/s換算為100kit/s

3. tqdm()的返回值

tqdm()的返回值是一個可迭代對象,迭代的每一個元素就是iterable的每一個參數(shù)。

該返回值可以修改進(jìn)度條信息。

示例:

with tqdm(range(100), desc='Test') as tbar:
    for i in tbar:
        tbar.set_postfix(loss=i/100, x=i)
        tbar.update()  # 默認(rèn)參數(shù)n=1,每update一次,進(jìn)度+n
        time.sleep(0.2)

4. tqdm.trange()

該函數(shù)實際上是封裝了一下tqdm()。

源代碼為:

def trange(*args, **kwargs):
    """
    A shortcut for tqdm(xrange(*args), **kwargs).
    On Python3+ range is used instead of xrange.
    """
    return tqdm(_range(*args), **kwargs)

顯然,trange()的第一個參數(shù)為可迭代對象的長度,其余參數(shù)與tqdm()一致。

示例:

for i in trange(100, desc='Test1'):
    time.sleep(0.2)

with trange(100, desc='Test2') as tbar:
    for i in range(100):
        tbar.set_postfix(loss=i/100, x=i)
        tbar.update()
        time.sleep(0.2)

5. 循環(huán)過程中輸出額外內(nèi)容

在循環(huán)進(jìn)行中,你可能想要輸出一些內(nèi)容,但是直接使用print輸出會導(dǎo)致進(jìn)度條出現(xiàn)多行。

解決方法有兩種:

1.參考【3. tqdm()的返回值】示例中的tbar.set_postfix方法,將內(nèi)容直接顯示在進(jìn)度條尾部。

2.使用tqdm.write('你要顯示的內(nèi)容。')方法;若使用pycharm的Run窗口運行,該方法仍無效或存在格式問題,可能是pycharm的bug,此時請使用方法1或改用終端(Terminal)運行代碼。

for i in tqdm(range(5), desc='Test'):
    tqdm.write('當(dāng)前i={}'.format(i))
    time.sleep(0.5)

6. 無法獲取迭代器長度的坑

有些迭代器是只能迭代一次的(如zip()),甚至連len()方法都沒有,即tqdm就無法得知它的總長度,從而導(dǎo)致進(jìn)度條顯示不出來(如下圖)

解決方法:你必須指定total參數(shù),如下

x = range(20)
y = range(20)
data = zip(x, y)
for i in tqdm(data, desc='Test', total=len(x)):
    time.sleep(0.1)

*其他方法實現(xiàn)進(jìn)度條

def process_bar(current, total, prefix='', auto_rm=True):
    bar = '=' * int(current / total * 50)
    bar = f' {prefix} |{bar.ljust(50)}| ({current}/{total}) {current / total:.1%} | '
    print(bar, end='\r', flush=True)
    if auto_rm and current == total:
        print(end=('\r' + ' ' * len(bar) + '\r'), flush=True)

for i in range(0, 100):
    time.sleep(0.1)
    process_bar(i+1, 100, '首部信息', auto_rm=False)

print('進(jìn)度條演示')

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python3+PyQt5重新實現(xiàn)自定義數(shù)據(jù)拖放處理

    python3+PyQt5重新實現(xiàn)自定義數(shù)據(jù)拖放處理

    這篇文章主要為大家詳細(xì)介紹了python3+PyQt5重新實現(xiàn)自定義數(shù)據(jù)拖放處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python版本的仿windows計劃任務(wù)工具

    python版本的仿windows計劃任務(wù)工具

    這篇文章主要介紹了python版本的仿windows計劃任務(wù)工具,計劃任務(wù)工具根據(jù)自己設(shè)定的具體時間,頻率,命令等屬性來規(guī)定所要執(zhí)行的計劃,當(dāng)然功能不是很全大家可以補充
    2018-04-04
  • java中兩個byte數(shù)組實現(xiàn)合并的示例

    java中兩個byte數(shù)組實現(xiàn)合并的示例

    今天小編就為大家分享一篇java中兩個byte數(shù)組實現(xiàn)合并的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Pipenv輕量級虛擬環(huán)境管理工具使用指南

    Pipenv輕量級虛擬環(huán)境管理工具使用指南

    這篇文章主要為大家介紹了Pipenv輕量級虛擬環(huán)境管理工具使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 淺談多卡服務(wù)器下隱藏部分 GPU 和 TensorFlow 的顯存使用設(shè)置

    淺談多卡服務(wù)器下隱藏部分 GPU 和 TensorFlow 的顯存使用設(shè)置

    這篇文章主要介紹了淺談多卡服務(wù)器下隱藏部分 GPU 和 TensorFlow 的顯存使用設(shè)置,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python中xml和json格式相互轉(zhuǎn)換操作示例

    Python中xml和json格式相互轉(zhuǎn)換操作示例

    這篇文章主要介紹了Python中xml和json格式相互轉(zhuǎn)換操作,結(jié)合實例形式分析了xmltodict庫的安裝及xml格式與json格式數(shù)據(jù)相互轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2018-12-12
  • 一文帶你學(xué)會Python?Flask框架設(shè)置響應(yīng)頭

    一文帶你學(xué)會Python?Flask框架設(shè)置響應(yīng)頭

    本篇博客我們將帶大家全面了解Python中Flask框架關(guān)于請求的相關(guān)設(shè)置的相關(guān)知識,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2023-01-01
  • python實現(xiàn)簡單名片管理系統(tǒng)

    python實現(xiàn)簡單名片管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)簡單名片管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 如何在Python中將字符串轉(zhuǎn)換為集合

    如何在Python中將字符串轉(zhuǎn)換為集合

    這篇文章主要介紹了如何在Python中將字符串轉(zhuǎn)換為集合,我們使用生成器表達(dá)式來迭代列表,并使用 int() 類將每個項目轉(zhuǎn)換為整數(shù),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Python列表推導(dǎo)式詳情

    Python列表推導(dǎo)式詳情

    這篇文章主要介紹了Python列表推導(dǎo)式,列表生成式即List Comprehensions,是Python內(nèi)置的非常簡單卻強大的可以用來創(chuàng)建list的生成式,下面來看看詳細(xì)內(nèi)容吧
    2021-11-11

最新評論