python 加速方法_24种方法加速你的Python

一,分析代码运行时间

第1式,测算代码运行时间

平凡方法

2f4ea6fbda198867abe38fb5caf6cecf.png

快捷方法(jupyter环境)

749083e332a03fbb0e3bf78c00a8c36b.png

第2式,测算代码多次运行平均时间

平凡方法

027d9bd2957ed18e6bffd4ac497c821a.png

a692a7440c6629ad1b071fce5e610127.png

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

平凡方法

65d172e580667e7af9a830a6667cc581.png

b8f408ea724bf3648463987d2c69a09c.png

e274ca1b78da515c2d6a02ed6d0ea19b.png

第4式,按行分析代码运行时间

平凡方法

688e453b1c400d9280f1bb523bebf91e.png

9430fcfbd2c9532d78a48a4b63d572cb.png

c9328900c096ee7d8e3946ec67ba9182.png

二,加速你的查找

第5式,用set而非list进行查找

低速方法

641235256f4091523b12fa01c5935056.png

fc5bd613983ac8ac48f68aebcad324db.png

高速方法

b86e0c1c7e8daca1d4e187af2adc4cfd.png

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

低速方法

019623cc7cce45a378606ac774deab03.png

82ba8b603706c6dadf52054b68c2252a.png

高速方法

22664a6cce61a8c7d8a53c2a3bf75732.png

三,加速你的循环

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

低速方法

cb5e032eab0539e7dda7bcd59436c16a.png

高速方法

d7d9601e38244a1d3b0f758aef87e0a8.png

第8式,在循环体中避免重复计算

低速方法

6a1db51eacd0fc6aa8b2a4462b3ccab3.png

高速方法

e03a20da42c8a399e4c7e37ccd8e8b7a.png

四,加速你的函数

第9式,用循环机制代替递归函数

低速方法

1fb7462ed33d174f692aecd9c4eaed9f.png

高速方法

0a83aa8213a6f160577f45f09e79d640.png

第10式,用缓存机制加速递归函数

低速方法

27da547865736c074723b5393e486fb7.png

高速方法

9b185d8a983a8d5ddce3f781024673ca.png

第11式,用numba加速Python函数

低速方法

4b465c10a0c49502cf5eb1744f8d6d30.png

高速方法

1c2bc3c296ac7999e9d781e80194dfa0.png

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

第12式,使用collections.Counter加速计数

低速方法

fef22fa058a7e8c657aa3336c0579975.png

高速方法

e79e10f673adf60d4c06a81cdf93f377.png

第13式,使用collections.ChainMap加速字典合并

低速方法

e604974d899cbe6c567b1d8eb445f762.png

7e3282c5c711b8ce2facd688d7663179.png

高速方法

f2ca63288845f8bd9041fff17db65dca.png

六,使用高阶函数进行加速

第14式,使用map代替推导式进行加速

低速方法

f0e98d1c55e78da16d363371a18dce68.png

高速方法

78dbd703754d24ae8233c345fbee03b4.png

第15式,使用filter代替推导式进行加速

低速方法

fed5acc9a0923172b2d80612d688507e.png

高速方法

09efb2aa383926ac8ca6442e7742643c.png

七,使用numpy向量化进行加速

第16式,使用np.array代替list

低速方法

835d7a7d659763534453dad554d7516f.png

高速方法

03b55cd6b8cefcba2aa8b5ebbd3528d4.png

第17式,使用np.ufunc代替math.func

低速方法

1f3a6d55ba2dc196b860de0c9641b173.png

高速方法

8468e6d72a5db83744e4a90dd01c7e6c.png

第18式,使用np.where代替if

低速方法

544b8c86f60f6d12a155ce6c2fb5c44d.png

7c8e63039796eed95daa1d945f318926.png

高速方法

63c84f6f235502b2c150b189bc964fc9.png

八,加速你的Pandas

第19式,使用csv文件读写代替excel文件读写

低速方法

bd6436b24aee0b5b9b2c25ff2e9401a2.png

高速方法

bdac0e2d34d229e5702a87634a3c18a3.png

第20式,使用pandas多进程工具pandarallel

低速方法

6af67e728d84c286d137d01afe2cda1c.png

dd326602b53c9c3f7ae1241846bb9288.png

高速方法

9c730836dfd8b17380c77ecaa22ee9cf.png

九,使用Dask进行加速

第21式,使用dask加速dataframe

低速方法

a140e1aa71bf830cc8841e746dc2cbdc.png

高速方法

c6c6734fa5998b66c47176f3f971e83c.png

第22式,使用dask.delayed进行加速

低速方法

1349c2f4f97a782c8f4e1b987db09b16.png

6b805a28cf454271cae094c7a77dd05d.png

高速方法

453a518aab2e329a9ad2ef5d6d668926.png

十,应用多线程多进程加速

第23式,应用多线程加速IO密集型任务

低速方法

6839196723b667d9904362e182f02daa.png

高速方法

b551a814c7b084ac5a83b452c2615e14.png

第24式,应用多进程加速CPU密集型任务

低速方法

b53360610458986a1d776ce30d6cc9b4.png

高速方法

c256c4e5548d230bd64704b84a2e4ac7.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值