采用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实现的Kmeans++算法实例
Apr 26 Python
python基础教程之对象和类的实际运用
Aug 29 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
TensorFlow的权值更新方法
Jun 14 Python
python 产生token及token验证的方法
Dec 26 Python
python celery分布式任务队列的使用详解
Jul 08 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
python实现快递价格查询系统
Mar 03 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
python实现文件分片上传的接口自动化
Nov 19 Python
Python 图片处理库exifread详解
Feb 25 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
在JavaScript中调用php程序
2009/03/09 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JavaScript运行机制实例分析
2020/04/11 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
python多线程编程中的join函数使用心得
2014/09/02 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
wxPython之解决闪烁的问题
2018/01/15 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
2015年幼儿园毕业感言
2014/02/12 职场文书
端午节演讲稿
2014/05/23 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
小学教师读书活动总结
2014/07/08 职场文书
安全责任书怎么写
2014/07/28 职场文书
教师四风问题整改措施
2014/09/25 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
党支部考察意见范文
2015/06/02 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers