python:性能优化(一)

python性能优化

01 在列表里面计数

Fl8Bpz536Z0JNUS6ISAYT-Umr7jo

性能:第二种计数方法比第一种快不要太多,因为Python原生的内置函数都是优化过的,所以能用原生的计算的时候,尽量用原生的函数来计算,所以能用原生的内置的数据结构,一定要用原生的(集合set去重也类似)。

02 过滤一个列表

性能:第二种方法有可能比第一种慢,有人可能觉得filter应该会快一些,其实filter增加了复杂度,返回一个迭代对象再用list转化为一个列表,所以开销大一些。其实最快是推导列表,比第一种性能快(这里仅仅是对于列表而言,如果不用转化为列表,那么高阶函数(map,filter等)就更快)。

03 列表成员检查

性能:第二种比第一种快近一倍,直接用in这样的方法检查列表内部成员比遍列要快很多的,然而更快的是使用第三:用set而非list进行查找

04 列表的排序

FpFStcD8Mx5RV9CGYl58V-o_IK5i

性能:第二种比第一种快了近6倍,sorted函数会把原来的列表进行排序然后再返回一个新的列表,而sort函数直接再原来的列表上面排序,节省了开销。

05 把迭代循环放到函数里面

性能:第二种明显要比第一种快,原因是因为把重复的循环直接放到了一次性的塞入函数,避免了多次调用函数的开销。

06 检查列表是否为空(检查是否为True)

Fj8Va6n0kF9gBhcnaMddsDOXwodS

性能:一个更比一个快。

07 使用[ ] {} 而不是list(),dict ()

性能:没有对比没有伤害,因为Python一切皆对象,所以当你用list()生成一个对象的时候会产生开销,而[]直接返回一个list,会快很多,同理dict也是一样的。

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

 

性能:dict方法更快

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

性能:for循环更快

10 循环体中避免重复计算

 

11 用循环机制代替递归函数

12 用缓存机制加速递归函数

13 用numba加速Python函数

FrrqUP2TGiBPBo6FA4yaqT2ZXfz5

14 使用collections.Counter加速计数

使用np.array代替list

低速方法

高速方法

使用np.ufunc代替math.func

低速方法

高速方法

使用np.where代替if

低速方法

高速方法

用csv文件读写代替excel文件读写

低速方法

高速方法

使用pandas多进程工具pandarallel

低速方法

高速方法

使用dask加速dataframe

低速方法

高速方法

使用dask.delayed进行加速

低速方法

高速方法

应用多线程加速IO密集型任务

低速方法

高速方法

c7fbc43aeedd1e700a47670569322ac2.jpg

应用多进程加速CPU密集型任务

低速方法

高速方法

你可能感兴趣的:(python,性能优化,开发语言)