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中wx将图标显示在右下角的脚本代码
Mar 08 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
浅谈python可视化包Bokeh
Feb 07 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
python 操作hive pyhs2方式
Dec 21 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
Prototype String对象 学习
2009/07/19 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
在线所见即所得HTML编辑器的实现原理浅析
2015/04/25 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python使用webbrowser浏览指定url的方法
2015/04/04 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
实习生自荐信范文
2013/11/13 职场文书
授权收款委托书范本
2014/10/10 职场文书
社区灵活就业证明
2014/11/03 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
CPU不支持Windows11系统怎么办
2021/11/21 数码科技