Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5096800
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2013-06-08 16:26:32

安装Psyco很简单,它有两种安装方式,一种是源码方式,一种是二进制码方式:
如果用源码方式安装,你需在源码的目录中调用python setup.py install命令编译生成psyco子目录,再把该子目录整个拷贝到python的site-packages目录下。
如果用二进制码方式安装,按这个网址列表中的python与psyco版本对应表下载合适的二进制文件,解压后会生成一个psyco-1.x的目录,把该目录下的psyco目录整个拷贝到python的site-packages目录下即可。
windows下下载:


(二)使用说明,在需要做效率优化的源文件前面加入以下两句:
import psyco
psyco.full()
另外,使用psyco.profile()可以对大程序进行适当分析,以确定哪些函数最值得编译。
psyco.log()函数用来记录profile()得到的信息,下次就可以运行就能更快一点。
psyco.bind(myfunc)指定对函数myfunc进行编译,可以做到比full()更精细的控制。
psyco.proxy(f)创建一个新的函数,它的代码是由f编译得到二进制码
(三)例子:


  1. import math, timeit, psyco


  2. def TestA():
  3.    res, loopcnt = 0.0, 100
  4.    for i in range(loopcnt):
  5.        for j in range(loopcnt):
  6.            for k in range(loopcnt):
  7.                res = res + math.sin(i+j+k) # loopcnt^3 times


  8. if __name__=='__main__':
  9.    TestB = psyco.proxy(TestA)
  10.    ta = timeit.Timer("TestA()", "from __main__ import TestA")
  11.    tb = timeit.Timer("TestB()", "from __main__ import TestB")
  12.    print("TestA(): %.2fs" % (ta.timeit(10)))
  13.    print("TestB(): %.2fs" % (tb.timeit(10)))



运行结果如下:
$ python test.py
TestA(): 15.84s
TestB(): 1.82s


使用Psyco处理过的函数执行速度快了大约7~8倍,比Psyco作者宣称的平均加速4倍的倍率更大些


from:

阅读(1762) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~