成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

給 Python 添加進度條 | 給小白的 Tqdm 精煉實例!

開發 后端
我們總共有 1e3 = 1000 個任務要做,但是這些任務并不是每次做一個,而是每次可能做 [1, 50) 個中的任意數量的工作。所以我們不可以單純讓 do_job 運行 1000 次,因為每次 do_job 的效率不同。

[[405507]]

本文轉載自微信公眾號「Piper蛋窩」,作者Piper蛋 。轉載本文請聯系Piper蛋窩公眾號。

假設我們有一個循環:

  1. for i in range(100): 
  2.     do_something()  # 這里做某些事 

假設 do_something() 很慢,且運行時間不穩定,當我們運行時,我們并不知道運行到哪里了。

我們引入一個進度條。

  1. from tqdm import trange 
  2. for i in trange(100): 
  3.     do_something() 
  4.  
  5. 輸出 
  6.   5%|██▌                   

如上,我們就可用實時查看進度。

安裝

這個庫并不是 python 自帶的庫,使用 pip 安裝就可。

  1. pip install tqdm 

來看看我的實驗環境。

  1. ❯ python --version 
  2. Python 3.7.0 
  3.  
  4. >>> tqdm.__version__ 
  5. '4.59.0' 

入門實例

說實在的,官方文檔[1]寫得并不是很好。

對于 range() ,我們把其改為 tqdm 中的 trange() 就可以。

其實, trange(5) 相當于 tqdm(range(5)) 。

  1. >>> a = ['a''b''c'] * 10000 
  2. >>> from tqdm import tqdm 
  3. >>> for i in tqdm(a): 
  4. ...     pass 
  5. ... 
  6. 100%|███████████| 30000/30000 [00:00<?, ?it/s] 
  7. >>> 

使用 for i in tqdm(a) 和 for i in a 邏輯上沒有區別,但是前者讓控制臺多出了一個進度條。

自定義進度條

其實,我們還可用「手把手地」操作進度條。尤其是當我們的進度并不是單純的依靠可迭代變量時。

假設我們有個任務如下。

  1. import random 
  2. import time 
  3.  
  4. class Task: 
  5.     def __init__(self) -> None: 
  6.         self.jobs = int(1e3) 
  7.  
  8.     @property 
  9.     def job_done(self) -> bool: 
  10.         return self.jobs <= 0 
  11.  
  12.     def do_job(self) -> int
  13.         time.sleep(1) 
  14.         job_minus = random.randint(1, 50) 
  15.         self.jobs = max(0, self.jobs - job_minus) 
  16.         return job_minus 

我們總共有 1e3 = 1000 個任務要做,但是這些任務并不是每次做一個,而是每次可能做 [1, 50) 個中的任意數量的工作。

所以我們不可以單純讓 do_job 運行 1000 次,因為每次 do_job 的效率不同。

這時我們定制我們的進度條。

  1. from tqdm import tqdm 
  2.  
  3. task: Task = Task() 
  4.  
  5. info = { 'efficiency': None } 
  6.  
  7. with tqdm( 
  8.     total=task.jobs, desc='Doing jobs' 
  9. as t: 
  10.  
  11.     while not task.job_done: 
  12.  
  13.         job_minus = task.do_job() 
  14.  
  15.         info['efficiency'] = job_minus 
  16.         t.update(job_minus) 
  17.         t.set_postfix(info) 

如上,我們聲明了一個 tqdm 對象:

  • 這個對象的計數總量是我們的總工作量 total=task.jobs
  • 進度條的前綴是 'Doing jobs'
  • 每一次刷新進度,我們進度條的增量是 t.update(job_minus)
  • 我們進度條后綴輸出信息 info['efficiency'] = job_minus

來看看效果。

  1. ❯ python .\example.py 
  2. Doing jobs:   9%|██▏                    | 94/1000 [00:03<00:28, 31.73it/s, efficiency=30] 

動圖如下。

總結

 

通過實例探討了 tqdm 進度條的使用。

 

責任編輯:武曉燕 來源: Piper蛋窩
相關推薦

2020-12-14 13:32:40

Python進度條參數

2020-11-27 10:33:11

Linuxcpmv命令

2020-11-02 18:27:29

進度條Linuxcp

2022-04-04 21:33:48

進度條Python

2011-07-05 15:16:00

QT 進度條

2021-12-15 10:01:06

Python進度條開發

2009-06-06 18:54:02

JSP編程進度條

2009-08-17 14:41:47

C#進度條實現

2022-07-20 09:10:47

Linux

2015-07-31 11:19:43

數字進度條源碼

2024-08-06 14:29:37

2009-08-17 17:15:48

C# 進度條效果

2009-08-17 14:36:15

C#進度條實現

2023-12-27 13:45:00

Python進度條代碼

2015-01-12 12:13:03

Android進度條ProgressDia

2015-01-12 09:30:54

Android進度條ProgressDia

2013-03-12 10:35:06

CSS 3

2015-08-03 11:39:20

擬物化進度條

2024-12-02 09:37:51

2022-07-23 21:37:48

Python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本精品视频一区二区 | a级在线观看 | 亚洲精品乱码久久久久久按摩 | 亚洲视频在线免费观看 | 成人一区二区三区在线 | 国产色网| 日本精品在线播放 | 欧美成人在线网站 | 在线精品一区二区三区 | 亚洲激情一级片 | 色www精品视频在线观看 | 国产精品福利久久久 | 免费黄色av | 国产亚洲欧美日韩精品一区二区三区 | 色婷婷久久 | 男女激情网| 97偷拍视频 | 亚洲综合一区二区三区 | 美女日批免费视频 | av色站| 亚洲一区中文字幕在线观看 | 婷婷在线免费 | 日本一区二区三区在线观看 | 国产色| 五月激情六月婷婷 | 狠狠操狠狠干 | 超碰人人做 | 98成人网| 欧美一区二区三区,视频 | 国产精品久久久久久久免费大片 | 男人的天堂久久 | 国产黄色在线观看 | 91在线第一页 | 欧美日韩亚洲成人 | 欧美午夜精品久久久久免费视 | 国产成人精品久久二区二区91 | 天堂中文在线观看 | 日韩在线小视频 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 激情一区二区三区 | 国产精品区一区二区三区 |