兩個驚豔的python庫 tqdm和retry

2021-08-28 20:54:54 字數 1835 閱讀 3363

python基本是我目前工作、計算、資料探勘的唯一程式語言(除了符號計算用mathematica外)。當然,基本的python功能並不是很強大,但它勝在有巨量的第三方擴充套件庫。在選用python的第三方庫時,我都會經過仔細考慮,希望能挑選出最簡單的、最直觀的乙個(因為本人比較笨,太複雜用不了)。在資料處理方面,我用得最多的是numpy和pandas,這兩個絕對稱得上王者級別的庫,當然不能不提的是scipy,但我很少直接用它,一般會通過pandas間接呼叫了;視覺化方面不用說是matplotlib了;在建模方面,我會用keras,直接上深度學習模型,keras已經成為相當流行的深度學習框架了,如果做文字挖掘,通常還會用到jieba(分詞)、gensim(主題建模,包含了諸如word2vec之類的模型),機器學習庫還有流行的scikit learn,但我很少用;網路方面,寫爬蟲我用requests,這是個人性化的網路庫,如果寫**,我會用bottle,這是個單檔案版的迷你框架,一切由自己定義,當然,我也不會去寫什麼大型**,我就寫乙個簡單的的介面那樣而已;最後如果要並行的話,一般直接用multiprocessing。

tqdm的介紹用一張gif就夠了。

說白了,它就是用來顯示進度條的,很漂亮,使用很直觀(在迴圈體裡邊加個tqdm),而且基本不影響原程式效率。名副其實的「太強大美」了!這樣在寫執行時間很長的程式時,是該多麼舒服啊!

tqdm(list)方法可以傳入任意一種list,比如陣列

from tqdm import tqdm

for i in tqdm(range(1000)):

#do something

pass

或者string的陣列

for char in tqdm(["a", "b", "c", "d"]):

#do something

pass

trange(i) 是 tqdm(range(i)) 的簡單寫法

from tqdm import trange

for i in trange(100):

#do something

pass

在for迴圈外部初始化tqdm,可以列印其他資訊

pbar = tqdm(["a", "b", "c", "d"])

for char in pbar:

pbar.set_description("processing %s" % char)

正如它的名字,retry是用來實現重試的。很多時候我們都需要重試功能,比如寫爬蟲的時候,有時候就會出現網路問題導致爬取失敗,然後就需要重試了,一般我是這樣寫的(每隔兩秒重試一次,共5次):

import time

def do_something():

***for i in range(5):

try:

do_something()

break

except:

time.sleep(2)

這樣未免有些累贅。有了retry後,只需要。

from retry import retry

@retry(tries=5, delay=2)

def do_something():

***do_something()

也就是在函式的定義前,加一句@retry就行了。

python果然是絕對省心~

Python爬蟲基礎 兩個實用庫

用python學爬蟲最大的好處就是python有很多實用庫,免去了我們自己造輪子的環節,那麼找哪些輪子呢?python爬蟲有兩個比較實用的庫,requests和beautiful soup。我認為學好這兩個庫,python爬蟲也就學的差不多了。beautiful soup 是乙個可以從html或xm...

兩個python切換

安裝好後,使用activate啟用某個環境 activate python34 for windows source activate python34 for linux mac 啟用後,會發現terminal輸入的地方多了python34的字樣,實際上,此時系統做的事情就是把預設2.7環境從pa...

兩個 Python 的冷技巧

記得剛開始工作的時候,老大給我們上 c 基礎課,告訴我們字串字面量可以換行 如下 感覺真是如夢如幻。include int main int argc,char argv 輸出 hello world.後來在寫了很久的 python 以後,才知道 python 其實也可以的 t hello worl...