最近手頭上的項目暫時告一段落,空閒出一點時間。所以整理一篇24式加速你的python,其實這個文章已經有很多人已經發過,最早我也是在一篇公衆號中看到的,現在自己手敲一遍整理一下,加深自己的印象。
一、分析代碼的運行時間
1. 測算代碼的運行時間
平凡方法
快捷方式(jupyter 環境)
2. 測算代碼多次運行平均時間
平凡方法
快捷方法(jupyter 環境)
3. 按調用函數分析代碼運行時間
平凡方法
快捷方法(jupyter 環境)
4. 按行分析代碼運行時間
平凡方法
快捷方法(jupyter 環境)
二、加速你的查找
5. 用set而非list進行查找
低速方法
高速方法
6. 用dict而非兩個list進行匹配查找
低速方法
高速方法
三、加速你的循環
7. 優先使用for循環而不是while循環
低速方法
高速方法
8. 在循環體中避免重複計算
低速方法
高速方法
四、加速你的函數
9. 用循環機制代替遞歸函數
低速方法
高速方法
10. 用緩存機制加速遞歸函數
低速方法
高速方法
11. 用numba加速Python函數
低速方法
高速方法
五、使用標準庫函數進行加速
12. 使用collections.Counter加速計數
低速方法
高速方法
13. 使用collections.ChainMap加速字典合併
低速方法
高速方法
六、使用高階函數進行加速
14. 使用map代替推導式進行加速
低速方法
高速方法
15. 使用filter代替推導式進行加速
低速方法
高速方法
七、使用numpy向量化進行加速
16. 使用np.array代替list
低速方法
高速方法
17. 使用np.ufunc代替math.func
低速方法
高速方法
18. 使用np.where代替if
低速方法
高速方法
八、加速你的Pandas
19. 使用csv文件讀寫代替excel文件讀寫
低速方法
高速方法
20. 使用pandas多進程工具pandarallel
低速方法
高速方法
九、使用Dask進行加速
21. 使用dask加速dataframe
低速方法
高速方法
22. 使用dask.delayed進行加速
低速方法
高速方法
十、應用多線程多進程加速
23. 應用多線程加速IO密集型任務
低速方法
高速方法
24. 應用多進程加速CPU密集型任務
低速方法
高速方法