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

假如想象 提交于 2021-01-14 04:46:30

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

  1. 分析代码运行时间

  2. 加速查找

  3. 加速循环

  4. 加速函数

  5. 实用标准库加速

  6. Numpy向量化加速

  7. 加速Pandas

  8. Dask加速

  9. 多线程多进程加速


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



一 、分析代码运行时间


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与算法之美,欢迎关注。



推荐阅读:

文本数据的特征提取都有哪些方法?

17个Python骚操作,你都Ok吗?

Python与算法社区
长按二维码,关注我的公众号

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!