成人免费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-02 18:27:29

進度條Linuxcp

2020-11-27 10:33:11

Linuxcpmv命令

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

2013-03-12 10:35:06

CSS 3

2015-01-12 09:30:54

Android進度條ProgressDia

2015-08-03 11:39:20

擬物化進度條

2024-12-02 09:37:51

2022-07-23 21:37:48

Python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线免费观看欧美 | 国产免费av在线 | 国产精品久久久久久久久久 | 日本久久久久久 | 国产精品欧美一区喷水 | 爽爽免费视频 | 亚洲欧美日韩精品久久亚洲区 | 日韩黄| 黄色播放| 毛片一区二区三区 | 可以免费观看的av | 欧美色专区 | 国产一区不卡 | 自拍偷拍亚洲欧美 | av在线免费网 | 久久久久国产精品一区二区 | 久久精品视频一区二区三区 | 国产91在线 | 欧美 | 九一在线观看 | 一级a性色生活片久久毛片 一级特黄a大片 | 国产精品久久久久久久久久久免费看 | 亚洲视频在线看 | 亚洲区视频| 欧美视频三区 | h免费观看 | 作爱视频免费观看 | 国产乱码精品一区二区三区忘忧草 | 福利一区二区 | 国产一区视频在线 | 偷拍亚洲色图 | 免费精品| 成人久草 | 激情毛片| 国产在线不卡 | 黄色播放| 国产欧美日韩一区 | 国产精品99久久久久 | 中文字幕日韩一区 | a级性视频| 国产999精品久久久 日本视频一区二区三区 | 国产精品一区二区三区在线 |