python奇技淫巧:性能优化(一)

python性能优化

FkTKjK6lsT6gO9Ee0_kKfJciPWdA

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密集型任务

低速方法

高速方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫96

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值