云哥前期从以下九个方面讨论了加速Python的具体方法,一共24个,每个都带有优化前后的对比,非常实用。
- 分析代码运行时间 
- 加速查找 
- 加速循环 
- 加速函数 
- 实用标准库加速 
- Numpy向量化加速 
- 加速Pandas 
- Dask加速 
- 多线程多进程加速 
我在此基础上主要美化了编辑,方便读者更容易阅读学习。
一 、分析代码运行时间
1 测算代码单次运行时间
 
 平凡法:

快捷法(Jupyter):

2 测算代码重复执行多次平均用时
平凡法:

快捷法(Jupyter):

3 按调用函数分析代码运行时间
平凡法:

快捷法(Jupyter):

4 按行分析代码运行时间
平凡法:

快捷法(Jupyter):

二、加速你的查找
5 用set而非list进行in查找
低速法:

高速法:

6 用dict而非两个list进行匹配查找
低速法:

高速法:

三、加速你的循环
7 优先使用for循环而不是while循环
低速法:

高速法:

8 循环体中避免重复运算
低速法:

高速法:

四、加速你的函数
9、用缓存机制加速递归函数
低速法:

高速法:

10、用循环取代递归
低速法:

高速法:

11、 使用Numba加速Python函数
低速法:

高速法:

五、使用标准库函数进行加速
12、使用collections.Counter类加速计数
 
 低速法:

高速法:

13、使用collections.ChainMap加速字典合并
低速法:

高速法:

六、使用numpy向量化进行加速
14、使用np.array代替list
低速法:

高速法:

15、使用np.ufunc代替math.func
低速法:

高速法:

16、使用np.where代替if
低速法:

高速法:

七、加速你的Pandas
低速法:

高速法:

18、避免动态改变DataFrame的行数
低速法:

高速法:

19、使用csv文件读写代替xlsx文件读写
低速法:

高速法:

20、使用pandas多进程工具pandarallel
低速法:

高速法:

八、使用Dask进行加速
21、使用dask加速dataframe
低速法:

高速法:

22、使用dask.delayed应用多进程加速
低速法:

高速法:

九、应用多线程多进程加速
23、使用多线程提升IO密集任务效率
低速法:

高速法:

24、使用多进程提升CPU密集任务效率
低速法:

高速法:

文章主要参考公众号:Python与算法之美,欢迎关注。

推荐阅读:

本文分享自微信公众号 - Python与算法社区(alg-channel)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4585819/blog/4582328