偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python進(jìn)度條tqdm,你值得擁有

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

前言

之所以了解到了這個(gè),是因?yàn)槭褂昧艘粋€(gè)依賴tqdm的包,然后好奇就查了一下。對(duì)于python中的進(jìn)度條也是經(jīng)常使用的,例如包的安裝,一些模型的訓(xùn)練也會(huì)通過進(jìn)度條的方式體現(xiàn)在模型訓(xùn)練的進(jìn)度??傊褂眠M(jìn)度條能夠更加錦上添花,提升使用體驗(yàn)吧。至于更多tqdm內(nèi)容可以參考tqdm官網(wǎng)[1]下面就來看看吧。 

1 簡單了解

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

 

Python進(jìn)度條tqdm你值得擁有

 

 

tqdm運(yùn)行

 

相關(guān)代碼如下: 

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

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

Python進(jìn)度條tqdm你值得擁有
run2

看起來還不錯(cuò)吧,現(xiàn)在我們?cè)敿?xì)地了解一下。

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))的一個(gè)特殊優(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()自己去構(gòu)建。 除此之外,可以用tqdm()在循環(huán)外手動(dòng)控制一個(gè)可迭代類型,如下: 

  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(),結(jié)果如下:

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

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

2.2 手工操作(Manual)

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

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

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

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

那么這個(gè)時(shí)候,就不要忘了在結(jié)束后關(guān)閉,或者del tqdm對(duì)象了。

2.3 模塊(Module)

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

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

 

Python進(jìn)度條tqdm你值得擁有

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

使用tqdm命令來試一試:

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

則有: 

Python進(jìn)度條tqdm你值得擁有

tqdm

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

Python進(jìn)度條tqdm你值得擁有

就暫時(shí)說到這吧,感覺內(nèi)容有點(diǎn)超綱了,如果對(duì)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): 

官方對(duì)各個(gè)參數(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ā)揮你的想象力了。

 

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2021-06-15 08:02:27

Python進(jìn)度條Tqdm

2015-07-31 11:19:43

數(shù)字進(jìn)度條源碼

2024-08-06 14:29:37

2021-09-06 10:22:47

匿名對(duì)象編程

2021-01-21 09:45:16

Python字符串代碼

2023-12-27 13:45:00

Python進(jìn)度條代碼

2011-07-05 15:16:00

QT 進(jìn)度條

2023-12-29 08:17:26

Python代碼分析Profile

2022-04-04 21:33:48

進(jìn)度條Python

2022-07-23 21:37:48

Python

2012-01-17 13:58:17

JavaSwing

2009-06-06 18:54:02

JSP編程進(jìn)度條

2023-12-11 17:15:05

應(yīng)用開發(fā)波紋進(jìn)度條ArkUI

2024-06-13 08:15:00

2022-02-04 21:33:34

Ajaxjs網(wǎng)站

2020-06-15 14:43:16

Python開發(fā)工具

2020-02-03 12:25:35

Python工具服務(wù)器

2021-07-05 09:40:57

工具Node開源

2021-03-18 07:52:42

代碼性能技巧開發(fā)

2021-01-07 09:35:49

Pythontqdm進(jìn)度
點(diǎn)贊
收藏

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