python珠穆朗玛峰问题_学会这6招,让你的Python 嗖嗖嗖的快!

在后面的程序效率对比上,我们以下面的python程序作为基础对比程序。

01.优化编写的代码

对于 Python程序,大家可以首先将程序的目的实现,然后在这个基础之上,分析程序执行效率低下的部分并实现优化,然后不断的执行这个分析效率-优化的步骤。对于效率低下的操作,可以采用 Python的内置高阶函数等方式进行加速,如下图所示:

上图程序中,我们分别使用for循环函数和 Python内置高阶map函数实现了列表中元素的平方,结果显示, 使用map函数,速度是原先的1.12倍。

02.Cython

Cython的语法同Python的语法类似,cython通过编写可以被python调用的C扩展,是其既具备了Python的语法特点,同时又有了像C语言一样的程序运行速度,此外,Cython还可以方便的调用C的包。下图给出的程序,展示的是利用cython进行开发时在运行速度上相较于 Python的提升。

上图可以看出,通过cython,虽然程序上没有区别,但是在运行速度上cython提升了1.5倍左右。

03.使用多线程

在进程执行当中,可以有多个线程同时进行执行,但是每个线程可以执行不同的任务,对于多线程,这里不做过多的解释,我们直接用一个简单的程序来展示多线程。

上述的程序中,我们使用多线程来实现我们的Pow_2函数,可以看到多线程同样起到了加速 Python程序执行,这里还需注意一点是我们使用多线程往一个公共的pow_list中添加数据,由于这是我们期望的,所以不需要添加线程锁来进行保护。

04.使用numba库

对于numba,官网对它本身的定义为“python的解释器”。对于numba库的详尽解释,这里小编给大家一个纽约大学的网站,大家可以通过这个网站的讲解,对numba有更加全面的了解(https://nyu-cds.github.io/python-numba/)

对于numba库的简单方法,最简单的是在函数定义的前面加上@jit装饰器。

上述程序中,我们在Pow_2函数前加上了jit装饰器,运行结果显示,其运行速度是基础方法的2.34倍左右,大大的缩短了程序的执行时间。

05.使用多进程

对于 Python的多进程, Python内置了多进程包multiprocessing,我们只需要定义一个函数,便可以借助multiprocessing包,轻松的实现从单进程到并发执行的转换。

上述程序中,我们创建了4个进程,并实现了将数组元素进行平方的功能,从结果可以看出,多进程实现了真正的并行,使得程序的运行时间大大缩短,运行速度达到了基础程序的3.05倍。06.尽可能使用numpy、pandas等科学计算库

使用科学计算库不仅可以帮助我们简化代码,提升代码可读性,而且其高效的数据处理效率可以大大提升我们的程序执行速度。

上图中,我们使用numpy来完成相同的效果,即对列表中的每个元素都实行平方。这里我们先将原始的列表origin_list转化numpy的数组,然后直接对数组进行平方。

注意这样的操作对于列表对象来说是不合法的。从上面的程序来看,使用numpy既大大简化了程序, 而且也大大的提升了程序的执行效率,提高了65倍啊!对于数据处理来说,是非常友好的。

上述的几个 Python运行效率提升的方法中,既有从程序本身入手进行提升,也有利用进程、线程技术和python+C的方法进行实现。大家可以在以后的程序编写中,在需要提升运行效率的时候,参考这几种方式,提升自己python程序的运行效率。

程序员GitHub,现已正式上线!

接下来我们将会在该公众号上,为大家分享 GitHub 上优质的开源神器,程序员圈的趣事,坚持每天一篇原创文章的输出,感兴趣的小伙伴可以关注一下哈!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值