zoukankan      html  css  js  c++  java
  • 采用Psyco实现python执行速度提高到与编译语言一样的水平

    本文实例讲述了采用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程序设计有所帮助。

    您可能感兴趣的文章:

  • 相关阅读:
    pytorch报错:AttributeError: 'module' object has no attribute '_rebuild_tensor_v2'
    python运行报错:cannot import name 'InteractiveConsole'
    sudo pip3找不到命令
    pytorch入门1——简单的网络搭建
    caffe训练时报错
    python滴啊用caffe时的小坑
    求两个字符串的编辑距离
    归并排序
    复杂度n求数组的第K大值
    牛顿法与拟牛顿法学习笔记(一)牛顿法
  • 原文地址:https://www.cnblogs.com/ExMan/p/10165894.html
Copyright © 2011-2022 走看看