python算法优化你可以考虑的几个方向,亲测有效
首先你要分析你的代码哪里出现性能瓶颈,找出原因
python内置的几个性能分析的模块:profile、cProfile和hotshot,使用方法基本都差不多,无非模块是纯Python还是用C写的。
1、Numpy 数学运算库
使用,当你要提升你的算法性能,你可以考虑用Numpy重构你的算法,NumPy可以极大地加速相对普通的数学运算。
2、缓存使用重复率高的数据
当有一些重复率高的函数计算,没必要每次要使用时,计算一遍,只需开始时计算一次,后续直接调用结果就好。
使用python的一个本地库:functools,拥有一个装饰器,叫@functools.lru_cache,它能够缓存函数最近的N个调用。
3、多使用C库,NumPy就是一个很好的例子。NumPy使用C编写的库是一种很好的方法
4、使用多线程。协程,进程。
当然要看你的实际运用场景,这种方法局限性很强,由于python的GIL的存在,你还要考虑线程间的上下文切换耗时。一般运用于以下情况:
a、连续的操作,需要花费忍无可忍的过长时间才可能完成
b、并行计算
c、为了等待网络、文件系统、用户或其他I/O响应而耗费大量的执行时间
你可以考虑考虑。
5、pypy
PyPy 是一个 Python 解释器和即时编译(JIT)工具,它专注与速度、效率,以及和 CPython 完全的兼容性。
6 使用python3
如果你还使用python2,你可以考虑考虑这种方法
欢迎留言指正、交流