当前位置:   article > 正文

24招加速你的Python,超级实用!

python np.array运算加速

云哥前期从以下九个方面讨论了加速Python的具体方法,一共24个,每个都带有优化前后的对比,非常实用。

  1. 分析代码运行时间

  2. 加速查找

  3. 加速循环

  4. 加速函数

  5. 实用标准库加速

  6. Numpy向量化加速

  7. 加速Pandas

  8. Dask加速

  9. 多线程多进程加速

我在此基础上主要美化了编辑,方便读者更容易阅读学习。

一 、分析代码运行时间


1 测算代码单次运行时间

平凡法:

640?wx_fmt=png

快捷法(Jupyter):

640?wx_fmt=png

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

平凡法:

640?wx_fmt=png

快捷法(Jupyter):

640?wx_fmt=png


3 按调用函数分析代码运行时间

平凡法:

640?wx_fmt=png

快捷法(Jupyter):

640?wx_fmt=png

4 按行分析代码运行时间


平凡法:

640?wx_fmt=png

快捷法(Jupyter):

640?wx_fmt=png

二、加速你的查找


5 用set而非list进行in查找

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

6 用dict而非两个list进行匹配查找

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

三、加速你的循环


7 优先使用for循环而不是while循环

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

8 循环体中避免重复运算

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

四、加速你的函数

9、用缓存机制加速递归函数

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

10、用循环取代递归

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

11、 使用Numba加速Python函数

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

五、使用标准库函数进行加速


12、使用collections.Counter类加速计数

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

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

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

六、使用numpy向量化进行加速


14、使用np.array代替list

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

15、使用np.ufunc代替math.func

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

16、使用np.where代替if

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

七、加速你的Pandas


低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

18、避免动态改变DataFrame的行数

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

19、使用csv文件读写代替xlsx文件读写

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

20、使用pandas多进程工具pandarallel

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

八、使用Dask进行加速


21、使用dask加速dataframe

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

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

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

九、应用多线程多进程加速


23、使用多线程提升IO密集任务效率

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

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

低速法:

640?wx_fmt=png

高速法:

640?wx_fmt=png

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

640?wx_fmt=png


推荐阅读:

640?wx_fmt=jpeg
Python与算法社区
长按二维码,关注我的公众号
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/74837
推荐阅读
相关标签
  

闽ICP备14008679号