采用Psyco实现python执行速度提高到与编译语言一样的水平


Posted in Python onOctober 11, 2014

本文实例讲述了采用Psyco实现python执行速度提高到与编译语言一样的水平的方法,分享给大家供大家参考。具体实现方法如下:

一、安装Psyco很简单,它有两种安装方式,一种是源码方式,一种是二进制码方式:

如果用源码方式安装,你需在源码的目录中调用python setup.py install命令编译生成psyco子目录,再把该子目录整个拷贝到python的site-packages目录下。

如果用二进制码方式安装,按这个网址列表中的python与psyco版本对应表下载合适的二进制文件,解压后会生成一个psyco-1.x的目录,把该目录下的psyco目录整个拷贝到python的site-packages目录下即可。

二、使用说明,在需要做效率优化的源文件前面加入以下两句:

import psyco

psyco.full()

另外,使用psyco.profile()可以对大程序进行适当分析,以确定哪些函数最值得编译。
psyco.log()函数用来记录profile()得到的信息,下次就可以运行就能更快一点。
psyco.bind(myfunc)指定对函数myfunc进行编译,可以做到比full()更精细的控制。
psyco.proxy(f)创建一个新的函数,它的代码是由f编译得到二进制码

三、例子:
psyco_test.py文件代码如下:

#!/usr/bin/python

# Filename:psyco_test.py

 

import math, timeit, psyco

 

def TestA():

    res, loopcnt = 0.0, 100

    for i in range(loopcnt):

        for j in range(loopcnt):

            for k in range(loopcnt):

                res = res + math.sin(i + j + k)

 

if __name__ == '__main__':

    TestB = psyco.proxy(TestA)

    ta = timeit.Timer("TestA()", "from __main__ import TestA")

    tb = timeit.Timer("TestB()", "from __main__ import TestB")

    print ("TestA(): %.2fs" % (ta.timeit(10)))

    print ("TestB(): %.2fs" % (tb.timeit(10)))

运行结果如下:

jobin@jobin-desktop:~/work/python/psyco$ python psyco_test.py

TestA(): 4.41s

TestB(): 1.63s

使用psyco处理过的函数执行速度快了4倍左右, 跟作者宣称的差不多。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python random模块常用方法
Nov 03 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
python转换字符串为摩尔斯电码的方法
Jul 06 Python
python生成IP段的方法
Jul 07 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
matplotlib subplots 调整子图间矩的实例
May 25 Python
对python3新增的byte类型详解
Dec 04 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
如何理解python面向对象编程
Jun 01 Python
PyTorch的torch.cat用法
Jun 28 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
Python实现生成bmp图像的方法
Jun 13 Python
跟老齐学Python之编写类之四再论继承
Oct 11 #Python
Python使用MySQLdb for Python操作数据库教程
Oct 11 #Python
跟老齐学Python之编写类之三子类
Oct 11 #Python
跟老齐学Python之编写类之二方法
Oct 11 #Python
Python中MYSQLdb出现乱码的解决方法
Oct 11 #Python
python操作mysql中文显示乱码的解决方法
Oct 11 #Python
wxPython窗口中文乱码解决方法
Oct 11 #Python
You might like
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
jquery 使用简明教程
2014/03/05 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
Django卸载之后重新安装的方法
2017/03/15 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
生物技术研究生自荐信
2013/11/12 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
社会实践的活动方案
2014/08/22 职场文书
支教个人总结
2015/03/04 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python