Python下使用Psyco模块优化运行速度


Posted in Python onApril 05, 2015

今天介绍下Psyco模块,Psyco模块可以使你的Python程序运行的像C语言一样快。
都说Python语言易用易学,但性能上跟一些编译语言(如C语言)比较要差不少,这里可以用C语言和Python语言各编写斐波纳契数列计算程序,并计算运行时间:

C语言程序

int fib(int n){

   if (n < 2)

     return n;

   else

     return fib(n - 1) + fib(n - 2);

}

 

int main() {

    fib(40);

    return 0;

}

Python写的
def fib(n):  

  if n < 2:  

     return n  

  else:  

     return fib(n - 1) + fib(n - 2)  

fib(40)

运行时间
$ time ./fib

3.099s

$ time python fib.py

16.655s

可以看到运行时间还是有点差距的,这里的差距大概是5倍左右,现在就介绍Psyco:

Psyco 是 Python 语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行速度,尤其是在程序中有大量循环操作时。最早被 Armin Rigo 开发,后来由 Christian Tismer 维护并继续完善。

Psyco 可以在 32位元 的 GNU/Linux、BSD、Mac OS X、Microsoft Windows 平台上运行。Psyco 使用 C语言 编写,只针对32位元平台进行了编码。目前开发工作已经停止,由 PyPy 所接替,同时 PyPy 也提供针对 64位元 系统的支持。Psyco 可以在 Python解释器 编译代码时自动优化,将其使用C实现,并针对循环操作进行一些特殊的优化。经过这些优化,程序的性能将会得到提升,在跨平台环境下尤为明显。

安装Psyco

sudo apt-get install python-psyco

或者到官网上下载安装包,使用easy install安装即可。

使用Psyco模块

import psyco

psyco.full()

 

def fib(n):

  if n < 2:

     return n

  else:

     return fib(n - 1) + fib(n - 2)

fib(40)

运行结果

$ time python fib.py  

3.190s

改善你的代码

现在将我大部分 Python 代码加上下列脚本来利用 Psyco 提升运行速度:

try:  

    import psyco  

    psyco.full()  

except ImportError:  

    pass # psyco not installed so continue as usual
Python 相关文章推荐
python中的五种异常处理机制介绍
Sep 02 Python
python快速查找算法应用实例
Sep 26 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
Django学习笔记之ORM基础教程
Mar 27 Python
Python+threading模块对单个接口进行并发测试
Jun 25 Python
python通过http下载文件的方法详解
Jul 26 Python
django实现支付宝支付实例讲解
Oct 17 Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
python 线程的五个状态
Sep 22 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
Python中使用tarfile压缩、解压tar归档文件示例
Apr 05 #Python
低版本中Python除法运算小技巧
Apr 05 #Python
Python中使用PDB库调试程序
Apr 05 #Python
使用PDB模式调试Python程序介绍
Apr 05 #Python
python使用calendar输出指定年份全年日历的方法
Apr 04 #Python
python获取指定网页上所有超链接的方法
Apr 04 #Python
python中字典dict常用操作方法实例总结
Apr 04 #Python
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
基于swoole实现多人聊天室
2018/06/14 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
用Eclipse写python程序
2018/02/10 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
高校自主招生自荐信
2013/12/09 职场文书
一年级学生期末评语
2014/04/21 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
不同意离婚代理词
2015/05/23 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL