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

使用 tqdm 在 Python 應用中顯示進度

開發 后端
如果你的程序需要一段時間才能顯示結果,可通過顯示它的進度來避免讓用戶感到沮喪。

阿拉米語,希伯來語和阿拉伯語中的閃米特語根 q-d-m 通常與前進或進度有關。阿拉伯語 taqaddum (تقدّم)的意思是“進度”。進度是很重要的。正如每部感覺良好的電影都會告訴你,旅程和目的地同樣重要。

大多數程序都有一個明確的目標,一個期望的最終狀態。有時,計算這個最終狀態可能需要很長的時間。雖然計算機沒有感情不在乎,但人卻在乎。人類并不樂意坐在原地等待,而看不到任何明顯的進展跡象。疑問不斷蔓延。程序崩潰了嗎?磁盤性能是否抖動?操作系統是否把所有的計算資源都分配給了其他任務?

就像正義一樣,進度必須被看到,而不僅僅是完成。Python 庫 tqdm 有助于使進度變得明確。

tqdm 模塊可在控制臺下工作,但它也專門支持了我最喜歡的環境之一 Jupyter。要在 Jupyter 中使用 tqdm,你需要導入 notebook 子模塊并安裝 ipywidgets 。notebook 子模塊與 tqdm 接口兼容。

這意味著你可以做一些導入時操作來導入正確的模塊,同時保持 tqdm 的用法不變。訣竅是檢查 __main__ 模塊是否具有全局變量 get_ipython。雖然這只是一個啟發式的方法,但卻是一個相當準確的方法:

  1. import sys 
  2. if hasattr(sys.modules["__main__"], "get_ipython"): 
  3.     from tqdm import notebook as tqdm 
  4. else: 
  5.     import tqdm 

最簡單的情況是,某件事情需要運行一定的迭代次數(事先已知),而每一次迭代的時間都差不多。例如,有一個計算任何數字的平方根的算法,通過從 1 作為猜測值開始,然后計算出一個改進后的猜測值:

  1. def improve_guess(rt, n): 
  2.     return (rt + n/rt) / 2 

一點點的改進可以讓你更加接近該平方根。例如,你可以計算 2 的平方根:

  1. guess = 1 
  2. target = 2 
  3. for i in tqdm.trange(10): 
  4.     guess = improve_guess(guess, target) 

 

使用 tqdm 在 Python 應用中顯示進度

精確了到小數點后 10 位!

 

  1. round(2 - guess*guess, 10) 
  1. 0.0 

一個稍微復雜一點的例子是,當元素的數量是已知的,而處理每個元素需要類似的時間。例如,你可以計算一些數字的乘積。為此,你需要一些隨機數:

  1. import random 
  2. numbers = [random.uniform(0, 2.8) for i in range(100)] 
  3. numbers[:5] 
  1. [2.6575636572230916, 
  2. 0.1286674965830302, 
  3. 1.0634250104041332, 
  4. 1.1760969844376505, 
  5. 0.45192978568125486] 

現在有了這些數字,可以將它們相乘了。使用 tqdm 最簡單的方法是包裝一個 Python 迭代函數。數值是一樣的,但是 tqdm 會顯示一個進度條:

  1. result = 1 
  2. for num in tqdm.tqdm(numbers): 
  3.     result *= num 
  4. result 
  1. 2.4081854901728303 

使用 tqdm 在 Python 應用中顯示進度

tqdm output

然而,并不是所有的事情都可以預測。最不容易預測的事情之一就是網絡速度。當你下載一個大文件時,衡量進度的唯一方法就是檢查已經下載了多少:

  1. url = "https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz" 
  2. import httpx 
  3. with httpx.stream("GET", url) as response: 
  4.     total = int(response.headers["Content-Length"]) 
  5.     with tqdm.tqdm(totaltotal=total) as progress: 
  6.         for chunk in response.iter_bytes(): 
  7.             progress.update(len(chunk)) 

使用 tqdm 在 Python 應用中顯示進度

tqdm output

有時,“嵌套”進度條是有意義的。例如,如果你要下載一個目錄,你就需要一個進度條來跟蹤文件,并為每個文件設置一個進度條。

下面是一個例子(但沒有實際下載一個目錄):

  1. files = [f"vid-{i}.mp4" for i in range(4)] 
  2. for fname in tqdm.tqdm(files, desc="files"): 
  3.     total = random.randrange(10**9, 2 * 10**9) 
  4.     with tqdm.tqdm(totaltotal=total, desc=fname) as progress: 
  5.         current = 0 
  6.         while current < total: 
  7.             chunk_size = min(random.randrange(10**3, 10**5), total - current) 
  8.             current += chunk_size 
  9.             if random.uniform(0, 1) < 0.01: 
  10.                 time.sleep(0.1) 
  11.             progress.update(chunk_size) 

使用 tqdm 在 Python 應用中顯示進度

tqdm output

所以,如果你的程序需要一段時間才能顯示最終結果,為避免讓你的用戶感到沮喪。請顯示它的進度!

 

責任編輯:趙寧寧 來源: Linux中國
相關推薦

2020-12-14 13:32:40

Python進度條參數

2021-06-15 08:02:27

Python進度條Tqdm

2025-01-08 14:34:58

2023-03-06 07:25:17

LinuxAdvanced

2013-01-05 13:50:13

AjaxWebASP.NET MVC

2010-03-15 10:24:20

Python函數變量

2022-04-04 21:33:48

進度條Python

2022-12-06 23:43:53

iOSCreateML應用

2009-08-27 14:01:41

C#進度條

2011-08-29 17:27:47

HTML 5交互移動應用

2021-04-12 16:18:24

CPUFetchLinuxCPU

2022-06-28 09:10:28

Linuxtree命令

2021-07-30 20:25:04

pipxPython編程語言

2023-12-07 08:22:58

Android應用

2010-03-03 17:52:31

Python線程同步

2010-03-19 17:15:43

2010-03-24 14:37:29

Python編程語言

2010-03-19 15:16:11

Python代碼

2011-08-19 17:44:01

2021-09-12 12:00:12

瀏覽器LinuxWeb 應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久成人免费视频 | 一区二区三区高清 | 一色桃子av一区二区 | 久久精品亚洲精品国产欧美kt∨ | 国产精品视频免费观看 | 九色在线 | 日韩一级精品视频在线观看 | 久久精品亚洲精品国产欧美 | 成人精品一区二区 | 免费av手机在线观看 | 免费一看一级毛片 | 国产乱码久久久 | 欧美黄色精品 | 国产在线观看网站 | 亚洲欧美中文日韩在线v日本 | 欧美最猛性xxxxx亚洲精品 | 美女久久视频 | 中文字幕一区二区三区四区五区 | 日韩一区二区三区av | 伊人精品| 久久r免费视频 | 久久久国产一区二区三区四区小说 | 日日夜夜操天天干 | 国产蜜臀97一区二区三区 | 亚洲精品电影网在线观看 | 精品国产99 | 欧美精品在线播放 | 日本 欧美 三级 高清 视频 | 成年无码av片在线 | 欧美aaa一级片 | 涩涩视频大全 | 新疆少妇videos高潮 | 色婷婷九月 | 伊人狠狠干| 日韩一区二区在线视频 | xx性欧美肥妇精品久久久久久 | 亚洲二区在线 | 国产精久久久 | 精品久久99 | www.一区二区三区 | 337p日本欧洲亚洲大胆鲁鲁 |