采用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执行get提交的方法
Apr 29 Python
python函数形参用法实例分析
Aug 04 Python
python中关于for循环的碎碎念
Jun 30 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
Django urls.py重构及参数传递详解
Jul 23 Python
Python中的self用法详解
Aug 06 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python中私有属性的定义方式
Mar 05 Python
Python新手学习标准库模块命名
May 29 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
pycharm 实现调试窗口恢复
Feb 05 Python
python批量更改目录名/文件名的方法
Apr 18 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数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP curl使用实例
2015/07/02 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Python unittest框架操作实例解析
2020/04/13 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
Java基础知识面试题
2014/03/25 面试题
会计专业自我鉴定范文
2013/12/29 职场文书
中国文明网签名寄语
2014/01/18 职场文书
高中学校对照检查材料
2014/08/31 职场文书
股东授权委托书范文
2014/09/13 职场文书
先进典型事迹材料
2014/12/29 职场文书
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
简单聊聊Golang中defer预计算参数
2022/03/25 Golang
Java设计模式之代理模式
2022/04/22 Java/Android