源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

采用Psyco实现python执行速度提高到与编译语言一样的水平

  • 时间:2022-06-07 05:29 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:采用Psyco实现python执行速度提高到与编译语言一样的水平
本文实例讲述了采用Psyco实现python执行速度提高到与编译语言一样的水平的方法,分享给大家供大家参考。具体实现方法如下: [b]一、安装Psyco[/b]很简单,它有两种安装方式,一种是源码方式,一种是二进制码方式: 如果用源码方式安装,你需在源码的目录中调用python setup.py install命令编译生成psyco子目录,再把该子目录整个拷贝到python的site-packages目录下。 如果用二进制码方式安装,按这个网址列表中的python与psyco版本对应表下载合适的二进制文件,解压后会生成一个psyco-1.x的目录,把该目录下的psyco目录整个拷贝到python的site-packages目录下即可。 [b]二、使用说明[/b],在需要做效率优化的源文件前面加入以下两句:
[u]复制代码[/u] 代码如下:
import psyco psyco.full()
另外,使用psyco.profile()可以对大程序进行适当分析,以确定哪些函数最值得编译。 psyco.log()函数用来记录profile()得到的信息,下次就可以运行就能更快一点。 psyco.bind(myfunc)指定对函数myfunc进行编译,可以做到比full()更精细的控制。 psyco.proxy(f)创建一个新的函数,它的代码是由f编译得到二进制码 [b]三、例子: [/b]psyco_test.py文件代码如下:
[u]复制代码[/u] 代码如下:
#!/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)))
运行结果如下:
[u]复制代码[/u] 代码如下:
jobin@jobin-desktop:~/work/python/psyco$ python psyco_test.py TestA(): 4.41s TestB(): 1.63s
使用psyco处理过的函数执行速度快了4倍左右, 跟作者宣称的差不多。 希望本文所述对大家的Python程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部