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 28 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
在matplotlib中改变figure的布局和大小实例
Apr 23 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
Python创建文件夹与文件的快捷方法
Dec 08 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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实现框架(一)
2006/10/09 PHP
通过文字传递创建的图形按钮
2006/10/09 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
php事务处理实例详解
2014/07/11 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
js 获取Listbox选择的值的代码
2010/04/15 Javascript
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
python去掉字符串中重复字符的方法
2014/02/27 Python
用Python编程实现语音控制电脑
2014/04/01 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
2014年会演讲稿范文
2014/01/06 职场文书
11月红领巾广播稿
2014/01/17 职场文书
求职面试个人自我评价
2014/02/28 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
停电调休通知
2015/04/16 职场文书
出生证明格式
2015/06/15 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
MySQL学习之基础命令实操总结
2022/03/19 MySQL
mysql sql常用语句大全
2022/06/21 MySQL