采用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的Django框架中的templates设置
May 11 Python
Python实现简单登录验证
Apr 13 Python
基于python的七种经典排序算法(推荐)
Dec 08 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
python如何生成各种随机分布图
Aug 27 Python
python递归法解决棋盘分割问题
Jul 17 Python
Python for循环及基础用法详解
Nov 08 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
python3 自动打印出最新版本执行的mysql2redis实例
Apr 09 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
python 字典和列表嵌套用法详解
Jun 29 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中对数据库操作的封装
2006/10/09 PHP
php上传文件的增强函数
2010/07/21 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
微信小程序canvas动态时钟
2020/10/22 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
python用户管理系统的实例讲解
2017/12/23 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
numpy.where() 用法详解
2019/05/27 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
专升本自我鉴定
2013/10/10 职场文书
党员组织关系介绍信
2014/02/13 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
财务工作检讨书
2014/10/29 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
个人求职信格式范文
2015/03/20 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python