采用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装饰器 免去调用父类构造函数的麻烦
May 18 Python
python调用新浪微博API项目实践
Jul 28 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
python爬虫中采集中遇到的问题整理
Nov 27 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编程风格规范分享
2014/01/15 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
php生成xml时添加CDATA标签的方法
2014/10/17 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
javascript数组去重小结
2016/03/07 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
Python实现的选择排序算法示例
2017/11/29 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
百联网上商城:i百联
2017/01/28 全球购物
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
大学毕业感言100字
2014/02/03 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
个人安全生产承诺书
2014/05/22 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
证婚人致辞精选
2015/07/28 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python