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标准库内置函数complex介绍
Nov 25 Python
python实现查询苹果手机维修进度
Mar 16 Python
python编程开发之日期操作实例分析
Nov 13 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
python 标准差计算的实现(std)
Jul 29 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
python实现画出e指数函数的图像
Nov 21 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
python如何利用Mitmproxy抓包
Oct 10 Python
Python matplotlib绘制雷达图
Apr 13 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
浅谈PHP封装CURL
2019/03/06 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
UserData用法总结 lanyu出品
2010/07/01 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python hook监听事件详解
2018/10/25 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
如何运行带参数的python脚本
2019/11/15 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
Python基于locals返回作用域字典
2020/10/17 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
六年级数学教学反思
2014/02/03 职场文书
大学生工作求职信
2014/06/23 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
医药销售自我评价200字
2014/09/11 职场文书
检讨书怎么写
2015/05/07 职场文书
公司人力资源管理制度
2015/08/05 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python