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 相关文章推荐
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
python3实现微型的web服务器
Sep 03 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
python对Excel的读取的示例代码
Feb 14 Python
如何基于Python按行合并两个txt
Nov 03 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
PHP生成Gif图片验证码
2013/10/27 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
python编程实现12306的一个小爬虫实例
2017/12/27 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
美国羊皮公司:Overland
2018/01/15 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
播音主持专业个人自我评价
2014/01/09 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
护士感人事迹
2014/05/01 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫