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

 更新时间:2014年10月11日 12:13:01   投稿:shichen2014  
这篇文章主要介绍了采用Psyco实现python执行速度提高到与编译语言一样的水平的方法,是非常实用的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程序设计有所帮助。

相关文章

  • Python 实现字符串中指定位置插入一个字符

    Python 实现字符串中指定位置插入一个字符

    下面小编就为大家分享一篇Python 实现字符串中指定位置插入一个字符,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python数据分析之 Pandas Dataframe应用自定义

    Python数据分析之 Pandas Dataframe应用自定义

    这篇文章主要介绍了Python数据分析之 Pandas Dataframe应用自定义,文章基于python的相关资料展开 Pandas Dataframe应用自定义的详细内容,需要的小伙伴可以参考一下
    2022-05-05
  • Python基于textdistance实现计算文本相似度

    Python基于textdistance实现计算文本相似度

    textdistance是Python的第三方库,用于计算文本之间的相似度或距离,本文主要为大家详细介绍了如何使用textdistance实现计算文本相似度,需要的可以了解下
    2024-03-03
  • Python列表list数组array用法实例解析

    Python列表list数组array用法实例解析

    这篇文章主要介绍了Python列表list数组array用法,实例解析了关于数组的各种常见操作,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • Python轻松破解加密压缩包教程详解

    Python轻松破解加密压缩包教程详解

    相信大家都遇到过这种情况,下载文件的时候遇到压缩包又没有密码,或者说自己设置的加密密码,但是忘记了,就很难受。下面就将为大家介绍如何解决这一问题
    2021-12-12
  • 教你用Python来制作一个自动抢票的脚本小程序

    教你用Python来制作一个自动抢票的脚本小程序

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域,但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票,那么,今天带大家用Python来制作一个自动抢票的脚本小程序,需要的朋友可以参考下
    2023-07-07
  • Python批量生成幻影坦克图片实例代码

    Python批量生成幻影坦克图片实例代码

    这篇文章主要给大家介绍了关于如何利用Python批量生成幻影坦克图片的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • spyder常用快捷键(分享)

    spyder常用快捷键(分享)

    下面小编就为大家带来一篇spyder常用快捷键(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Python使用signal定时结束AsyncIOScheduler任务的问题

    Python使用signal定时结束AsyncIOScheduler任务的问题

    这篇文章主要介绍了Python使用signal定时结束AsyncIOScheduler任务,在使用aiohttp结合apscheduler的AsyncIOScheduler模拟定点并发的时候遇到两个问题,针对每个问题给大家详细介绍,需要的朋友可以参考下
    2021-07-07
  • python自动化工具之pywinauto实例详解

    python自动化工具之pywinauto实例详解

    这篇文章主要为大家详细介绍了python自动化工具之pywinauto实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08

最新评论