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

Python進度條tqdm,你值得擁有

開發(fā) 后端
之所以了解到了這個,是因為使用了一個依賴tqdm的包,然后好奇就查了一下。對于python中的進度條也是經常使用的,例如包的安裝,一些模型的訓練也會通過進度條的方式體現(xiàn)在模型訓練的進度。總之,使用進度條能夠更加錦上添花,提升使用體驗吧。至于更多tqdm內容可以參考tqdm官網[1]下面就來看看吧。

前言

之所以了解到了這個,是因為使用了一個依賴tqdm的包,然后好奇就查了一下。對于python中的進度條也是經常使用的,例如包的安裝,一些模型的訓練也會通過進度條的方式體現(xiàn)在模型訓練的進度??傊?,使用進度條能夠更加錦上添花,提升使用體驗吧。至于更多tqdm內容可以參考tqdm官網[1]下面就來看看吧。 

1 簡單了解

先來看看效果,使用循環(huán)顯示一個智能的進度條-只需用tqdm(iterable)包裝任何可迭代就可完成,如下: 

 

Python進度條tqdm你值得擁有

 

 

tqdm運行

 

相關代碼如下: 

  1. import tqdm 
  2. import time 
  3.  
  4.  
  5. for i in tqdm.tqdm(range(1000)): 
  6.     time.sleep(0.1) 

官方也給了一張圖,來看看: 

Python進度條tqdm你值得擁有
run2

看起來還不錯吧,現(xiàn)在我們詳細地了解一下。

2 使用

安裝就不用說了,使用pip install tqdm即可。tqdm主要有以下三種用法。

2.1 基于迭代器的(iterable-based)

使用案例如下,使用tqdm()傳入任何可迭代的參數(shù): 

  1. from tqdm import tqdm 
  2. from time import sleep 
  3.  
  4.  
  5. text = "" 
  6. for char in tqdm(["a""b""c""d"]): 
  7.     sleep(0.25) 
  8.     text = text + char 

tqdm(range(i))的一個特殊優(yōu)化案例: 

  1. from time import sleep 
  2. from tqdm import trange 
  3.  
  4. for i in trange(100): 
  5.     sleep(0.01) 

這樣就可以不同傳入range(100)這樣的迭代器了,trange()自己去構建。 除此之外,可以用tqdm()在循環(huán)外手動控制一個可迭代類型,如下: 

  1. pbar = tqdm(["a""b""c""d"]) 
  2. for char in pbar: 
  3.     sleep(0.25) 
  4.     pbar.set_description("Processing %s" % char

這里還使用了.set_description(),結果如下:

  1. Processing d: 100%|██████████| 4/4 [00:01<00:00,  3.99it/s] 

相關參數(shù)容后再介紹。

2.2 手工操作(Manual)

使用with語句手動控制tqdm的更新,可以根據(jù)具體任務來更新進度條的進度。 

  1. with tqdm(total=100) as pbar: 
  2.     for i in range(10): 
  3.         sleep(0.1) 
  4.         pbar.update(10) 

當然with這個語句想必大家都知道(想想使用with打開文件就知道了),也可以不使用with進行,則有如下操作: 

  1. pbar = tqdm(total=100) 
  2. for i in range(10): 
  3.     sleep(0.1) 
  4.     pbar.update(10) 
  5. pbar.close() 

那么這個時候,就不要忘了在結束后關閉,或者del tqdm對象了。

2.3 模塊(Module)

也許tqdm的最妙用法是在腳本中或在命令行中。只需在管道之間插入tqdm(或python -m tqdm),即可將所有stdin傳遞到stdout,同時將進度打印到stderr。具體如何操作,我們來看看,下面也是官方給出的例子。 以下示例演示了對當前目錄中所有Python文件中的行數(shù)進行計數(shù),其中包括計時信息。(為了能夠在windows系統(tǒng)中使用linux命令,這是使用git打開),也是當前項目路徑。

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

 

Python進度條tqdm你值得擁有

linux命令補充: time[2],find[3](-exec 使用其后參數(shù)操作查找到的文件);wc[4].

使用tqdm命令來試一試:

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

則有: 

Python進度條tqdm你值得擁有

tqdm

注意,也可以指定tqdm的常規(guī)參數(shù)。如下: 

Python進度條tqdm你值得擁有

就暫時說到這吧,感覺內容有點超綱了,如果對tqdm有興趣的話可以訪問官方文檔深入了解。

3 參數(shù)

官方的類初始化代碼如下: 

  1. class tqdm(): 
  2.   ""
  3.   Decorate an iterable object, returning an iterator which acts exactly 
  4.   like the original iterable, but prints a dynamically updating 
  5.   progressbar every time a value is requested. 
  6.   ""
  7.  
  8.   def __init__(self, iterable=None, desc=None, total=None, leave=True
  9.                file=None, ncols=None, mininterval=0.1, 
  10.                maxinterval=10.0, miniters=None, ascii=None, disable=False
  11.                unit='it', unit_scale=False, dynamic_ncols=False
  12.                smoothing=0.3, bar_format=None, initial=0, position=None, 
  13.                postfix=None, unit_divisor=1000): 

官方對各個參數(shù)介紹如下: 

  1. Parameters 
  2.         ---------- 
  3.         iterable  : iterable, optional 
  4.             Iterable to decorate with a progressbar. 
  5.             Leave blank to manually manage the updates. 
  6.         desc  : str, optional 
  7.             Prefix for the progressbar. 
  8.         total  : int, optional 
  9.             The number of expected iterations. If unspecified, 
  10.             len(iterable) is used if possible. If float("inf"or as a last 
  11.             resort, only basic progress statistics are displayed 
  12.             (no ETA, no progressbar). 
  13.             If `gui` is True and this parameter needs subsequent updating, 
  14.             specify an initial arbitrary large positive integer
  15.             e.g. int(9e9). 
  16.         leave  : bool, optional 
  17.             If [defaultTrue], keeps all traces of the progressbar 
  18.             upon termination of iteration. 
  19.         file  : `io.TextIOWrapper` or `io.StringIO`, optional 
  20.             Specifies where to output the progress messages 
  21.             (default: sys.stderr). Uses `file.write(str)` and `file.flush()` 
  22.             methods.  For encoding, see `write_bytes`. 
  23.         ncols  : int, optional 
  24.             The width of the entire output message. If specified, 
  25.             dynamically resizes the progressbar to stay within this bound. 
  26.             If unspecified, attempts to use environment width. The 
  27.             fallback is a meter width of 10 and no limit for the counter and 
  28.             statistics. If 0, will not print any meter (only stats). 
  29.         mininterval  : float, optional 
  30.             Minimum progress display update interval [default: 0.1] seconds. 
  31.         maxinterval  : float, optional 
  32.             Maximum progress display update interval [default: 10] seconds. 
  33.             Automatically adjusts `miniters` to correspond to `mininterval` 
  34.             after long display update lag. Only works if `dynamic_miniters` 
  35.             or monitor thread is enabled. 
  36.         miniters  : int, optional 
  37.             Minimum progress display update interval, in iterations. 
  38.             If 0 and `dynamic_miniters`, will automatically adjust to equal 
  39.             `mininterval` (more CPU efficient, good for tight loops). 
  40.             If > 0, will skip display of specified number of iterations. 
  41.             Tweak this and `mininterval` to get very efficient loops. 
  42.             If your progress is erratic with both fast and slow iterations 
  43.             (network, skipping items, etc) you should set miniters=1. 
  44.         ascii  : bool or str, optional 
  45.             If unspecified or False, use unicode (smooth blocks) to fill 
  46.             the meter. The fallback is to use ASCII characters " 123456789#"
  47.         disable  : bool, optional 
  48.             Whether to disable the entire progressbar wrapper 
  49.             [defaultFalse]. If set to None, disable on non-TTY. 
  50.         unit  : str, optional 
  51.             String that will be used to define the unit of each iteration 
  52.             [default: it]. 
  53.         unit_scale  : bool or int or float, optional 
  54.             If 1 or True, the number of iterations will be reduced/scaled 
  55.             automatically and a metric prefix following the 
  56.             International System of Units standard will be added 
  57.             (kilo, mega, etc.) [defaultFalse]. If any other non-zero 
  58.             number, will scale `total` and `n`. 
  59.         dynamic_ncols  : bool, optional 
  60.             If set, constantly alters `ncols` to the environment (allowing 
  61.             for window resizes) [defaultFalse]. 
  62.         smoothing  : float, optional 
  63.             Exponential moving average smoothing factor for speed estimates 
  64.             (ignored in GUI mode). Ranges from 0 (average speed) to 1 
  65.             (current/instantaneous speed) [default: 0.3]. 
  66.         bar_format  : str, optional 
  67.             Specify a custom bar string formatting. May impact performance. 
  68.             [default'{l_bar}{bar}{r_bar}'], where 
  69.             l_bar='{desc}: {percentage:3.0f}%|' and 
  70.             r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, ' 
  71.               '{rate_fmt}{postfix}]' 
  72.             Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, 
  73.               percentage, rate, rate_fmt, rate_noinv, rate_noinv_fmt, 
  74.               rate_inv, rate_inv_fmt, elapsed, elapsed_s, remaining, 
  75.               remaining_s, desc, postfix, unit. 
  76.             Note that a trailing ": " is automatically removed after {desc
  77.             if the latter is empty. 
  78.         initial  : int, optional 
  79.             The initial counter value. Useful when restarting a progress 
  80.             bar [default: 0]. 
  81.         position  : int, optional 
  82.             Specify the line offset to print this bar (starting from 0) 
  83.             Automatic if unspecified. 
  84.             Useful to manage multiple bars at once (eg, from threads). 
  85.         postfix  : dict or *, optional 
  86.             Specify additional stats to display at the end of the bar. 
  87.             Calls `set_postfix(**postfix)` if possible (dict). 
  88.         unit_divisor  : float, optional 
  89.             [default: 1000], ignored unless `unit_scale` is True
  90.         write_bytes  : bool, optional 
  91.             If (default: None) and `file` is unspecified, 
  92.             bytes will be written in Python 2. If `True` will also write 
  93.             bytes. In all other cases will default to unicode. 
  94.         gui  : bool, optional 
  95.             WARNING: internal parameter - do not use. 
  96.             Use tqdm_gui(...) instead. If set, will attempt to use 
  97.             matplotlib animations for a graphical output [defaultFalse]. 

更多功能則可根據(jù)以上參數(shù)發(fā)揮你的想象力了。

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2021-06-15 08:02:27

Python進度條Tqdm

2015-07-31 11:19:43

數(shù)字進度條源碼

2024-08-06 14:29:37

2021-01-21 09:45:16

Python字符串代碼

2023-12-27 13:45:00

Python進度條代碼

2011-07-05 15:16:00

QT 進度條

2021-09-06 10:22:47

匿名對象編程

2022-04-04 21:33:48

進度條Python

2022-07-23 21:37:48

Python

2023-12-29 08:17:26

Python代碼分析Profile

2009-06-06 18:54:02

JSP編程進度條

2023-12-11 17:15:05

應用開發(fā)波紋進度條ArkUI

2012-01-17 13:58:17

JavaSwing

2024-06-13 08:15:00

2022-02-04 21:33:34

Ajaxjs網站

2009-08-17 15:48:47

C# WinForm進

2015-01-12 12:13:03

Android進度條ProgressDia

2009-08-17 14:41:47

C#進度條實現(xiàn)

2009-12-25 17:58:12

WPF進度條

2009-08-18 09:49:00

C# listview
點贊
收藏

51CTO技術棧公眾號