采用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开发之for循环操作实例详解
Nov 12 Python
详解Python中类的定义与使用
Apr 11 Python
Python简单的制作图片验证码实例
May 31 Python
Python 多线程Threading初学教程
Aug 22 Python
Flask框架模板继承实现方法分析
Jul 31 Python
Django 大文件下载实现过程解析
Aug 01 Python
flask实现验证码并验证功能
Dec 05 Python
在python中使用pyspark读写Hive数据操作
Jun 06 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Python torch.flatten()函数案例详解
Aug 30 Python
Python开发五子棋小游戏
May 02 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中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python中的面向对象编程详解(下)
2015/04/13 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Python类及获取对象属性方法解析
2020/06/15 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
Python中Selenium模块的使用详解
2020/10/09 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
自我评价正确写法范文
2013/12/10 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
超市促销活动总结
2014/07/01 职场文书
婚内房产协议书范本
2014/10/02 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
比较node.js和Deno
2021/04/27 Javascript
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers