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实现二维码扫码自动登录淘宝
Dec 27 Python
python算法表示概念扫盲教程
Apr 13 Python
python3个性签名设计实现代码
Jun 19 Python
Python内存读写操作示例
Jul 18 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
python编写扎金花小程序的实例代码
Feb 23 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
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
jQuery基础知识小结
2014/12/22 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
babel基本使用详解
2017/02/17 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python实现的彩票机选器实例
2015/06/17 Python
使用Python实现简单的服务器功能
2017/08/25 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
python打包成so文件过程解析
2019/09/28 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
后备干部培训方案
2014/05/22 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
python基础之文件操作
2021/10/24 Python
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis