采用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 相关文章推荐
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
详解python tkinter教程-事件绑定
Mar 28 Python
Python实现Singleton模式的方式详解
Aug 08 Python
python 实现dict转json并保存文件
Dec 05 Python
Python二次规划和线性规划使用实例
Dec 09 Python
pytorch 求网络模型参数实例
Dec 30 Python
python实现超级马里奥
Mar 18 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 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获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
js实现进度条的方法
2015/02/13 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python动态加载变量示例分享
2014/02/17 Python
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Python之str操作方法(详解)
2017/06/19 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Django 限制访问频率的思路详解
2019/12/24 Python
python字符串下标与切片及使用方法
2020/02/13 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
《盲人摸象》教学反思
2014/02/16 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
禁烟标语大全
2014/06/11 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
五一晚会主持词
2015/07/01 职场文书
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python