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

您可能感兴趣的文章:

采用Psyco实现python执行速度提高到与编译语言一样的水平的更多相关文章

  1. 【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

    [知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 ...

  2. 提高python执行效率的方法

    python上手很容易,但是在使用过程中,怎么才能使效率变高呢? 下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法. 例如: 1.我们要使用os模块 ...

  3. 【转】利用Psyco提升Python运行速度

    转自:http://www.leeon.me/a/use-Psyco-to-improve-Python-speed Psyco 是严格地在 Python 运行时进行操作的.也就是说,Python 源 ...

  4. Python执行机制

    1.4 Python执行机制 Python中IDLE是其自带的集成开发工具(IDE:同时拥有编辑.编译.调试.运行等多种功能的集成工具),并且它也是Python自带的编译器和解释器. 1.4.1 Py ...

  5. 一行代码让python的运行速度提高100倍

    python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. “一行代码让python的运行速度提高100倍”这绝不是哗众取宠的 ...

  6. .NET 的 Debug 和 Release build 对执行速度的影响

    这篇文章发布于我的 github 博客:原文 在真正开始讨论之前先定义一下 Scope. 本文讨论的范围限于执行速度,内存占用什么的不在评估的范围之内. 本文不讨论算法:编译器带来的优化基本上属于底层 ...

  7. JavaScript代码优化(下载时间和执行速度优化)

    JavaScript代码的速度被分成两部分:下载时间和执行速度. 下载时间 Web浏览器下载的是js源码,因此所有长变量名和注释都回包含在内.这个因素会增加下载时间.1160是一个TCP-IP包中的字 ...

  8. 爬虫必备:Python 执行 JS 代码 —— PyExecJS、PyV8、Js2Py

    在使用爬虫中,经常会遇到网页请求数据是经过 JS 处理的,特别是模拟登录时可能有加密请求.而目前绝大部分前端 JS 代码都是经过混淆的,可读性极低,想理解代码逻辑需要花费大量时间.这时不要着急使用 S ...

  9. 记Oracle中regexp_substr的一次调优(速度提高95.5%)

    项目中需要做一个船舶代理费的功能,针对代理的船进行收费,那么该功能的第一步便是选择进行代理费用信息的录入,在进行船舶选择的时候,发现加载相关船舶信息十分的慢,其主要在sql语句的执行,因为测试的时候数 ...

随机推荐

  1. 关于C++ 命名空间Namespace 的解析

    使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突.在C++中,变量.函数和类都是大量存在的.如果没有命名空间,这些变量.函数.类的名称将都存在于全局命名空间中,会导致很多冲突.比如,如果我 ...

  2. enter键触发的函数

    enter键触发的函数示例: <input type="text" onkeydown="fun();"> function fun() { if( ...

  3. Mysql导出大量数据

    outfile 导出文件   select name from t1 into outfile "/tmp/test.txt"   infile 导入文件 导入到表t1中的name ...

  4. 用Camshift算法对指定目标进行跟踪

    原理 Camshift算法是Continuously Adaptive Mean Shift algorithm的简称. 它是一个基于MeanSift的改进算法.它首次由Gary R.Bradski等 ...

  5. 函数指针使用演示样例(參考Linux-内核代码)

    本文有xhz1234(徐洪志)编写,转载请注明出处. http://blog.csdn.net/xhz1234/article/details/36635083 作者:徐洪志 近期阅读Linux-内核 ...

  6. android等待旋转圆圈动画

    先创建一个动画的xml文件例如以下 <? xml version="1.0" encoding="utf-8"?> <animation-li ...

  7. POJ 3211 Washing Clothes(01背包)

    POJ 3211 Washing Clothes(01背包) http://poj.org/problem?id=3211 题意: 有m (1~10)种不同颜色的衣服总共n (1~100)件.Dear ...

  8. ipython notebook 如何打开.ipynb文件?

    标签: pythontensorflow 2017-03-29 14:17 235人阅读 评论(0) 收藏 举报  分类: TensorFlow(13)  转自:https://www.zhihu.c ...

  9. iOS移动开发周报-第20期

    iOS移动开发周报-第20期iOS移动开发周报-第20期 [摘要]:本期iOS移动开发周报带来如下内容:iOS 通知中心扩展制作入门,iOS APP可执行文件的组成,objc非主流代码技巧等. 教程 ...

  10. MVC上传多张图片

    改变上传文件的按钮样式: <div id="post-upload-image"> <div id="divfile_-1"> < ...