24式加速你的Python

來源:Python與算法之美

ID:Python_Ai_Road

作者:樑雲1991

一,分析代碼運行時間

第1式,測算代碼運行時間

平凡方法

4b6f47d3cbe04cb7bf8f065f8f488fbb


快捷方法(jupyter環境)

6f3ab64d96244aedb932f280e5a7f1aa


第2式,測算代碼多次運行平均時間

平凡方法

2ed8055c07b7442ba6743c151dcc757f


快捷方法(jupyter環境)

7774c0215d114db2bc1b320cccd6b6c7


第3式,按調用函數分析代碼運行時間

平凡方法

0e97af6e17c24e6095ab80ec91ab8b69


aa5460e45f8340df91a0b74f25091080


快捷方法(jupyter環境)

b0dd1fa77c374be6a8850d3a79cced68


第4式,按行分析代碼運行時間

平凡方法

faa4cff4c34945b084f63f27d8aa6f96


3661f00739d94b1d9d624cee61b88f7a


ebc260ddea1b4ec08a6788844be36f43


30adb5b82c8449318aef93ce133355d1


快捷方法(jupyter環境)

07e1226288bb4f4e844609b57a9c4d73


二,加速你的查找

第5式,用set而非list進行查找

低速方法

73a97fb5d4e84ddeab8f716d04ab2339


99b8f721236442f7a013aad83420d19c


高速方法

58ffc5a3235f4852b6a963cf01fe019a


第6式,用dict而非兩個list進行匹配查找

低速方法

6009a6f3c75d453c9383fd7e3cd408db


ee0f2884567541eca9c8fb4f2358da9f


高速方法

988ce97cc95047f78fdded8adce51b2c


三,加速你的循環

第7式,優先使用for循環而不是while循環

低速方法

6c232bd6135443d086667d1a1e00b1cb


高速方法

05b969a67b3347fd934e856f078f45a8


第8式,在循環體中避免重複計算

低速方法

4bffdf9b31ca4036bf70c421d5a9c767


高速方法

763696aa042947cea0935dd2f25ad7b2


四,加速你的函數

第9式,用循環機制代替遞歸函數

低速方法

c601fc1a270d428e80f02aa6335b8f11


高速方法

7302abe5362e4a82b8319c24d049cffd


第10式,用緩存機制加速遞歸函數

低速方法

8bcd777072a24fb19bb5bc74ce60a73c


高速方法

23f8d580253b4b4e97a84ca61f29896c


第11式,用numba加速Python函數

低速方法

fdc86139ad3d4d3c9e61258ba372a20a


高速方法

4af1351004b14fae8e3db0e753c83fde


五,使用標準庫函數進行加速

第12式,使用collections.Counter加速計數

低速方法

a42678d009d94ee682f49dcd779b889a


高速方法

b458630e58484646bd6d2111e607419e


第13式,使用collections.ChainMap加速字典合併

低速方法

0d30fcdd8a974d54871f02d13a257c51


9be652c03e91424095af2065f17ed344


高速方法

57d6ed12f62b4e08b7fff469a2e60caf


六,使用numpy向量化進行加速

第14式,使用np.array代替list

低速方法

841184a76f5e4dfb9beb330e97f9542b


高速方法

9187fcae93e84ddf934f18534b719bab


第15式,使用np.ufunc代替math.func

低速方法

0dc8fb12793e4a21ae9a1041605e5807


高速方法

aaa7758b4872457dbe13204f69aa974a


第16式,使用np.where代替if

低速方法

c81e4334c58c43b4b9d15715fb91e046


a8b17bff892c4e09aa07879bfe2358d6


高速方法

7ccf3874110041c0b55ca6d91f091b55


七,加速你的Pandas

第17式,使用np.ufunc函數代替applymap

低速方法

daf80d11c1d7498ca0313565cb554fb2


高速方法

5f63b126d45743bc8d3e68ce6831826c


第18式,使用預分配存儲代替動態擴容

低速方法

875333fd5c9942bd88b90b40d70d86d3


高速方法

b80232ff6c7f48f68ff117782e2de98e


第19式,使用csv文件讀寫代替excel文件讀寫

低速方法

0fa73a7600c04f8587600b5ff2fee13e


高速方法

2c438d131d534fb7a55d60a02a39807e


第20式,使用pandas多進程工具pandarallel

低速方法

4dcb0b389c7b41679fe8f54a67644c9c


96158230da9646ffabe2909d0d5c5c75


高速方法

3a22dd66ab4a4996ad25571806578d4a


八,使用Dask進行加速

第21式,使用dask加速dataframe

低速方法

221fbaf3c39c455293867b4bb1621820


高速方法

4dc7c5e928574037a2d61140d3ee146f


第22式,使用dask.delayed進行加速

低速方法

360ecce627004a28a51612f56b333817


fb22245dfbbf4b9eb2b25cc5472b7c58


高速方法

94a425d40da340e4a07e0d4fdf7c7588


九,應用多線程多進程加速

第23式,應用多線程加速IO密集型任務

低速方法

fa0d445c9e6a43c0ab8ba7dabed92d6a


高速方法

dae9ac16aeaa4680abe23e8c028a421f


第24式,應用多進程加速CPU密集型任務

低速方法

55df501459804d52ba3c8b02dd8afe92


高速方法

c5c36fbef5d645598dcfaf1c9f669033


你想更深入瞭解學習Python知識體系,你可以看一下我們花費了一個多月整理了上百小時的幾百個知識點體系內容:

【超全整理】《Python自動化全能開發從入門到精通》筆記全放送


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章