python array按行归一化_24 式加速你的 Python

(点击上方快速关注并设置为星标,一起学Python)

一,分析代码运行时间

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

平凡方法

6681933b82764f351ba2d2c7a5b12b2e.png

快捷方法(jupyter环境)

3046366d531319f6a762695f5e69b36d.png

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

平凡方法

8602755a6ae72fbca60087c088755aa9.png

快捷方法(jupyter环境)

1e9def087d2a476710b7722fe66ab78e.png

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

平凡方法

381ac4ef89148b6818999964bf8340ab.png

7c2fd0f80cd724bdcb8ded2b42cf1964.png

快捷方法(jupyter环境)

1fb64ee90d08669813196058e307d52c.png

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

平凡方法

9c0884f321fd6c459bcf2d7228c04382.png

32e4041fc450d62cd47f8c03163cbd64.png

ac8315f47ddbd32459a5c3a775decb32.png

dcc0bcde421762b6078b73e0ee18e84d.png

快捷方法(jupyter环境)

b4aaaa9029f58006904993862e40843e.png

二,加速你的查找

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

低速方法

36df74e78056531abb246cac6ee8f8ab.png

25752f9039d1155201916019c2f4b973.png

高速方法

ae8ceac54812128bdd53b3bac7249122.png

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

低速方法

88686cd06f29a8e9d2d088234894eb2d.png

5b0446439207ecdd493d20528aedef87.png

高速方法

3bcf78caa83eca67766aec028231e947.png

三,加速你的循环

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

低速方法

e7a63839929c26e2f94e95c18fda9c9f.png

高速方法

f0ecdf9d9f0ac54c471e3d97b6ab9bd4.png

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

低速方法

d346e24c93a0a7b4d1f96a283a487f6a.png

高速方法

fc6800c4a89e9c1eb05fa471025dedd7.png

四,加速你的函数

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

低速方法

80899617573ce2f8eae41d36626108bd.png

高速方法

c3b55a5920d984fd7e6af77fe864970b.png

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

低速方法

e9349cbbfbc3d4b84039ee28d858d355.png

高速方法

f6e5e457997f01137d96ca227be4c06b.png

第11式,用numba加速Python函数

低速方法

03fccb2fe3e91b1b45b7655a7184612c.png

高速方法

fe9eb062f11343195f8110348df45746.png

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

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

低速方法

4e646c1c35147e948f36a2c051ed553c.png

高速方法

3168dcbeba9c029a81439bc67881468b.png

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

低速方法

7fe9763089b27559392319cdb8b01060.png

ed92e0a42eb1adc17d5b62c2b77d2082.png

高速方法

091b64ed7efba1cd52833a4617a99392.png

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

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

低速方法

1a580915baea0fdc0670b0d721b4ac69.png

高速方法

1b88b7bbf758db7d155523d4026f1f93.png

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

低速方法

12731273fcb0509b28b6081afab151d5.png

高速方法

f02ce0b100b74277c07e31f134fbca30.png

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

低速方法

314f7f3c58a85a323dc2b28a7057d977.png

4dae00153217c1ba0d5f6a5c1be885e9.png

高速方法

730c5ad3a8373aba11f081c04f27cac9.png

七,加速你的Pandas

第17式,使用np.ufunc函数代替applymap

低速方法

d18a10fda33a8cb0808f078144e5b862.png

高速方法

8e8fa3cb9d17972787cdbe37dca2d8de.png

第18式,使用预分配存储代替动态扩容

低速方法

463308d63c5d257dfdc4b1d30abae99e.png

高速方法

8efec212b56828d26f407e9a72fc5ca4.png

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

低速方法

acc58f3b5c049c6842ee1c7dbe540853.png

高速方法

d1ce0a332cc59f2e05fdd9084c5ec11f.png

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

低速方法

6b05efee86e9612cccec3021a44196d2.png

8cfa71b424af21ffec2339c3d6c9df8a.png

高速方法

7c77a4d88b9d57b202681295db3070a4.png

八,使用Dask进行加速

第21式,使用dask加速dataframe

低速方法

bdd7b5546346970544001b5259adc719.png

高速方法

e4a2acc9b35648b97c42813ba0d3bd20.png

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

低速方法

ac056e9e9184946942b99789198615b6.png

322a82c8b0036a1146e0e4df7679efa2.png

高速方法

928fe0b4e398e7f13ce4339c98827941.png

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

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

低速方法

bce9b88fdc091d87cabe38469ac5983e.png

高速方法

1bbcccdabe1905e6d47268ab1c428f11.png

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

低速方法

a108fa2af078a5f69c9ef4c623b2176e.png

高速方法

705ec7d691dfd6bc20e0eb5382807360.png

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

deac493548811e3dcecca5b1093d2fd4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值