采用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如何实现excel数据添加到mongodb
Jul 30 Python
Python类属性的延迟计算
Oct 22 Python
Python实现对象转换为xml的方法示例
Jun 08 Python
Python管理Windows服务小脚本
Mar 12 Python
在Python中使用gRPC的方法示例
Aug 08 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
python matplotlib库直方图绘制详解
Aug 10 Python
Python列表元素常见操作简单示例
Oct 25 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
python3 pathlib库Path类方法总结
Dec 26 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python list去重且保持原顺序不变的方法
Apr 03 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
第十五节--Zend引擎的发展
2006/11/16 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
处理单名多值表单的详解
2013/06/08 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
javascript如何实现create方法
2019/11/04 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
老师对学生的评语
2014/04/18 职场文书
珍惜资源的建议书
2014/08/26 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
小学感恩主题班会
2015/08/12 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Java实现多文件上传功能
2021/06/30 Java/Android
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle