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中使用动态变量名的方法
May 06 Python
Python单链表的简单实现方法
Sep 23 Python
python数据处理实战(必看篇)
Jun 11 Python
python Socket之客户端和服务端握手详解
Sep 18 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
pandas 如何分割字符的实现方法
Jul 29 Python
使用python实现画AR模型时序图
Nov 20 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
pycharm 关掉syntax检查操作
Jun 09 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 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
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
jquery实现拖动效果
2016/08/10 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python 实现A*算法的示例代码
2018/08/13 Python
Python 函数list&amp;read&amp;seek详解
2019/08/28 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
10张动图学会python循环与递归问题
2021/02/06 Python
一份全面的PHP面试问题考卷
2012/07/15 面试题
女方回门宴答谢词
2014/01/14 职场文书
歌唱比赛获奖感言
2014/01/21 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
支行行长岗位职责
2015/02/15 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
房产遗嘱范本
2015/08/06 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
Redis唯一ID生成器的实现
2022/07/07 Redis