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

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

開發(fā) 后端
不知你是否有過這樣的經(jīng)歷:你寫了一個程序,每次運行都會耗費很長時間。在等待程序運行期間你一次次地按下回車防止程序卡死。亦或者你的任務需要實時掌握程序運行進度但你根本不知道程序執(zhí)行到了哪里...

[[392218]]

現(xiàn)在,alive-progress 來了,它是一個 Python 下的進度條庫,不僅使用方便而且支持多種炫酷顯示效果!讓我們先來看看示例效果:

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

下面讓我們一起玩轉這個庫!

一、安裝

在 Python 下使用 pip 進行安裝:

 

  1. pip install alive-progress 

二、快速入門

2.1 直接使用

在循環(huán)中使用 alive-progress 是最常見的用法,腳本可以這樣寫:

 

  1. # 導入 alive-progress 庫 
  2. from alive_progress import alive_bar 
  3. import time 
  4.  
  5. # 使用 with 語句創(chuàng)建一個進度條 
  6. with alive_bar(100) as bar: # 給 alive_bar 傳入進度條總數(shù)目(這里是 100) 
  7.     for item in range(100): 
  8.         # 等待 1s 
  9.         time.sleep(.1) 
  10.         #更新進度條,進度 +1 
  11.         bar() 

請注意,如果無法正常顯示動畫則嘗試在 alive_bar 中加上 force_tty=True 參數(shù)。

運行以上代碼我們可以看到在終端中出現(xiàn)了一個還算華麗的動態(tài)進度條:

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

需要注意的是 alive-progress 并不像 tqdm 等進度條庫一樣會自動更新,只有我們程序調用了 bar 才會讓進度條 +1

當然,我們也可以不給進度條傳入總數(shù)目這個參數(shù),此時進度條將不顯示進度,并進入未定義模式:

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

有時候我們想直接操縱顯示的位置,這時候可以設定 alive_bar 的 manual 參數(shù)為 True:

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. total = 100 
  5. with alive_bar(total, manual=Trueas bar: # total 可以不指定,這時候只有百分比 
  6.     bar(0.5) # 進度到 50% 
  7.     time.sleep(0.5) 
  8.     bar(0.1) # 進度到 10%  
  9.     time.sleep(0.5) 
  10.     bar(0.75) # 進度到 75% 
  11.     time.sleep(0.5) 
  12.     bar(1.0) # 進度到 100% 
  13.     time.sleep(0.5) 
  14.     bar(10) # 進度到 1000% 
  15.     for i in range(1,101): 
  16.         bar(i/100) # 設定進度為 i% 
  17.         time.sleep(0.05) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

當然,在運行過程中我們也需要輸出一些提示信息,直接使用 print 可以在不破壞進度條的情況下輸出一行提示信息,text 方法則可以在進度條尾部添加后綴字符,而 title 參數(shù)則可以給進度條添加標題(前綴信息),具體使用方法及效果如下:

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. # 定義標題(前綴字符)為 HelloGitHub 
  5. with alive_bar(10, title="HelloGitHub"as bar: 
  6.     for i in range(10): 
  7.         time.sleep(1) 
  8.  
  9.         bar()   # 讓進度 +1 
  10.         bar.text("Doning Work #%d"%(i+1))   # 更新進度條后綴 
  11.  
  12.         print("Work #%d finished"%i)        # 輸出一行信息 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

2.2 添點花樣

看多了傳統(tǒng)的進度條樣式想換換花樣?沒問題,alive-progress 不僅內(nèi)置了多種進度條樣式,還支持自定義格式。

進度條可以自定義的樣式分為兩種:bar 和 spinner,只需要在調用 alive_bar 的時候傳入對應的參數(shù)即可。

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

以這個進度條為例,中間最長的是 bar,旁邊來回晃動的 www.HelloGitHub.com 是 spinner。

alive-progress 內(nèi)置了多種 bar 和 spinner 樣式,只需要調用 show_bars 或者 show_spinners 即可快速預覽相應的樣式,例如:

 

  1. from alive_progress import show_bars 
  2.  
  3. show_bars() # 查看內(nèi)置 bar 樣式 

 

 

 

 

  1. from alive_progress import show_spinners 
  2. show_spinners() # 查看內(nèi)置 spinner 樣式 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

默認樣式使用起來非常簡單,例如我想使用 bubbles 這個 bar 和 message_scrolling 這個 spinner,直接傳入對應名稱即可:

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. # 直接傳入對應名字即可 
  5. with alive_bar( 
  6.             100, 
  7.             title="HelloGitHub",  
  8.             bar="bubbles", spinner="message_scrolling" 
  9.             ) as bar: 
  10.  
  11.     for i in range(100): 
  12.         time.sleep(.1) 
  13.         bar() 

 

 

 

如果不知道 total 的數(shù)目,可以使用 unknown 參數(shù)(這時候將替換 bar 為 spinner):

 

  1. from alive_progress import alive_bar 
  2. import time 
  3.  
  4. with alive_bar( 
  5.             title="HelloGitHub",  
  6.             # 注意:這里 bar 被換成了unknow,內(nèi)置樣式名稱與 spinner 的相同 
  7.             unknown="stars", spinner="message_scrolling" 
  8.             ) as bar: 
  9.  
  10.     for i in range(100): 
  11.         time.sleep(.1) 
  12.         bar() 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

三、私人定制

或許比起直接使用內(nèi)置模板你更喜歡自己定制的進度條,對此 alive-progress 也提供了對應方法。

3.1 定制 bar

使用 standard_bar_factory 方法可以快速定制 bar,bar 可以設置的參數(shù)有五個:

  • chars:正在執(zhí)行單元的動畫,按照進度依次顯示。
  • borders:進度條邊界,顯示在左右兩邊。
  • background:未執(zhí)行到單元顯示的內(nèi)容。
  • tip:執(zhí)行單元的前導符號。
  • errors:出錯時(進度未走全,超出 total 值等)時顯示的字符。

例如我們想做一個如圖所示的 bar:

 

 

則可以這樣來寫:

 

  1. from alive_progress import alive_bar, standard_bar_factory 
  2. import time 
  3.  
  4. ##-------自定義 bar-------## 
  5. my_bar = standard_bar_factory( # 以下參數(shù)均有默認值,不必一次全部修改 
  6.                             chars="123456789#", # 加載時根據(jù)進度依次顯示,長度任意 
  7.                             borders="<>",  # bar 兩頭的邊界 
  8.                             background=".",  # 未加載部分用 "." 填充 
  9.                             tip=">",   # 指示進度方向的引導符號(分割 "#" 與 "."
  10.                             errors="⚠❌" # 發(fā)生錯誤時顯示的內(nèi)容(未完成,溢出)  
  11.                             ) 
  12. ##-------自定義結束-------## 
  13.  
  14. ##--------動畫演示-------## 
  15. with alive_bar( 
  16.             10, 
  17.             title="HelloGitHub",  
  18.             bar=my_bar, # 這里傳入剛剛自定義的 bar 
  19.       spinner="message_scrolling"
  20.             manual=True 
  21.             ) as bar: 
  22.  
  23.     for i in range(50): 
  24.         time.sleep(.1) 
  25.         bar(i/100) 
  26.     bar(.5) 
  27.     time.sleep(2) 
  28.     bar(10) 
  29.     print("上溢"
  30.     time.sleep(1) 
  31.     bar(1) 
  32.     print("100% 完成"
  33.     time.sleep(1) 
  34.     bar(.1) 
  35.     print("未完成"

 

3.2 定制 spinner

對于 spinner,alive-progress 提供了更多種的動畫定義方式:

frame_spinner_factory:將傳入的字符串挨個輸出:

 

  1. from alive_progress import alive_bar, frame_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = my_spinner = frame_spinner_factory( 
  5.                                 r'-----'
  6.                                 r'1----'
  7.                                 r'-2---'
  8.                                 r'--3--'
  9.                                 r'---4-'
  10.                                 r'----5' 
  11.                                 ) # 直接傳入字符串 
  12.  
  13. with alive_bar( 
  14.             title="HelloGitHub"
  15.             spinner=my_spinner 
  16.             ) as bar: 
  17.  
  18.     while True
  19.         bar() 
  20.         time.sleep(.1) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

可以看到字符串挨個循環(huán)輸出。

scrolling_spinner_factory:將字符串滾動播出

 

  1. from alive_progress import alive_bar, scrolling_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = scrolling_spinner_factory( 
  5.                                     chars="HelloGitHub", # 想要播放的字符串 
  6.                                     length=15, # spinner 區(qū)域寬度 
  7.                                     blank='.' # 空白部分填充字符 
  8.                                     ) 
  9.  
  10. with alive_bar( 
  11.             title="HelloGitHub"
  12.             spinner=my_spinner 
  13.             ) as bar: 
  14.  
  15.     while True
  16.         bar() 
  17.         time.sleep(.1) 

 

 

 

bouncing_spinner_factory:將兩個字符串交替滾動播出

 

  1. from alive_progress import alive_bar, bouncing_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = bouncing_spinner_factory( 
  5.                                     right_chars="I love", # 從左邊進入的字符串 
  6.                                     length=15, # spinner 區(qū)域長度 
  7.                                     left_chars="HelloGitHub", # 從右邊進入的字符串 
  8.                                     blank='.',  # 空白區(qū)域填充字符 
  9.                                     ) 
  10.  
  11. with alive_bar( 
  12.             title="HelloGitHub"
  13.             spinner=my_spinner 
  14.             ) as bar: 
  15.  
  16.     while True
  17.         bar() 
  18.         time.sleep(.1) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

當然,也可以省略 left_chars 這個參數(shù),其效果相當于 I love 將會像彈球一樣左右彈動。

unknown_bar_factory:將 spinner 轉換為能使用在未定義模式中的格式:

 

  1. from alive_progress import alive_bar, unknown_bar_factory, bouncing_spinner_factory 
  2. import time 
  3.  
  4. my_spinner = bouncing_spinner_factory("www.HelloGitHub.com",15,hiding=False
  5.  
  6. my_unknown_bar = unknown_bar_factory(my_spinner) # 傳入定義的 spinner 
  7. with alive_bar( 
  8.             title="HelloGitHub"
  9.             unknown=my_unknown_bar 
  10.             ) as bar: 
  11.  
  12.     while True
  13.         bar() 
  14.         time.sleep(.1) 

 

 

讓你的程序炫起來!少有人知道但超酷的Python進度條開源庫

 

四、結尾

到這里,相信你已經(jīng)掌握了 alive_progress 的基本玩法,alive-progress 還提供了一些在不同場合所需的特殊功能,有興趣的朋友可以通過閱讀官方文檔或源代碼進行更加深入的了解。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2022-07-23 21:37:48

Python

2010-07-27 14:00:53

Flex ComboB

2012-06-20 11:19:04

jQuery

2020-12-14 13:32:40

Python進度條參數(shù)

2011-05-24 15:29:05

程序CC++

2019-03-19 09:00:14

Python 開發(fā)編程語言

2015-07-31 11:19:43

數(shù)字進度條源碼

2024-08-06 14:29:37

2024-07-04 11:25:34

2020-07-19 15:39:37

Python開發(fā)工具

2022-02-04 21:33:34

Ajaxjs網(wǎng)站

2015-01-12 12:13:03

Android進度條ProgressDia

2013-03-12 10:35:06

CSS 3

2015-01-12 09:30:54

Android進度條ProgressDia

2024-12-02 09:37:51

2015-08-03 11:39:20

擬物化進度條

2024-07-25 08:55:47

進度條水缸進度動畫效果

2022-06-27 08:01:55

動畫CSS前端

2023-12-27 13:45:00

Python進度條代碼

2011-07-05 15:16:00

QT 進度條
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产成人av好男人在线观看 | 在线观看精品视频网站 | 国产特级毛片 | 久久久成人免费一区二区 | 福利成人| 久久成人国产精品 | 国产探花 | 国产精品国产三级国产aⅴ原创 | 尤物在线精品视频 | 亚洲成人福利在线观看 | 欧美日韩一区精品 | 亚洲国产欧美一区二区三区久久 | 一区二区中文字幕 | av福利网| 亚洲成人免费观看 | 日韩在线一区二区三区 | 欧美亚洲另类在线 | 国产精品视频网站 | 精品国产一区二区三区久久久蜜月 | a级片www| 成人在线国产 | 蜜桃黄网| 日韩国产一区 | 91大神在线看 | 黄色免费观看 | 999视频在线播放 | 国产中的精品av涩差av | jizz18国产 | 在线成人 | 五月天天丁香婷婷在线中 | 久久久精品一区二区 | 国产精品国产 | 国产视频精品视频 | 成人免费看片又大又黄 | 久久精品国产免费 | 水蜜桃亚洲一二三四在线 | 在线观看视频91 | 欧美日韩一区在线播放 | 日韩视频在线观看中文字幕 | 九九综合 | 一区二区三区久久 |