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生态系统(Python新手入门指导)
Dec 11 Python
使用python存储网页上的图片实例
May 22 Python
详解python持久化文件读写
Apr 06 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
python单例模式的多种实现方法
Jul 26 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
python代码能做成软件吗
Jul 24 Python
python修改微信和支付宝步数的示例代码
Oct 12 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产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php记录日志的实现代码
2011/08/08 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
HTML5进度条特效
2014/12/18 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
销售类个人求职信范文
2013/09/25 职场文书
消防器材管理制度
2014/01/28 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
个性婚礼策划方案
2014/05/17 职场文书
安全生产年活动总结
2014/08/29 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
团代会开幕词
2015/01/28 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书