WEB开发网
开发学院软件开发Python 用Psyco让Python运行得像C一样快 阅读

用Psyco让Python运行得像C一样快

 2007-11-12 12:52:53 来源:WEB开发网   
核心提示: 但是,Psyco 中真正省时的原因在于 Psyco 将操作分成三个不同的级别,用Psyco让Python运行得像C一样快(4),对于 Psyco,有“运行时”、“编译时”和“虚拟时”变量,把下列行置于模块顶端:impo

但是,Psyco 中真正省时的原因在于 Psyco 将操作分成三个不同的级别。对于 Psyco,有“运行时”、“编译时”和“虚拟时”变量。Psyco 根据需要提高和降低变量的级别。运行时变量只是常规 Python 解释器处理的原始字节码和对象结构。一旦 Psyco 将操作编译成机器码,那么编译时变量就会在机器寄存器和可直接访问的内存位置中表示。

最有意思的级别是虚拟时变量。在内部,一个 Python 变量就是一个有许多成员组成的完整结构 - 即使当对象只代表一个整数时也是如此。Psyco 虚拟时变量代表了需要时可能会被构建的 Python 对象,但是这些对象的详细信息在它们成为 Python 对象之前是被忽略的。例如,考虑如下赋值:

x = 15 * (14 + (13 - (12 / 11)))

标准的 Python 会构建和破坏许多对象以计算这个值。构建一个完整的整数对象以保存 (12/11) 这个值;然后从临时对象的结构中“拉”出一个值并用它计算新的临时对象 (13-PyInt)。而 Psyco 跳过这些对象,只计算这些值,因为它知道“如果需要”,可以从值创建一个对象。

使用 Psyco

解释 Psyco 相对比较困难,但是使用 Psyco 就非常容易了。基本上,其全部内容就是告诉 Psyco 模块哪个函数/方法要“专门化”。任何 Python 函数和类本身的代码都不需进行更改。

有几种方法可以指定 Psyco 应该做什么。“猎枪(shotgun)”方法使得随处都可使用 Psyco 即时操作。要做到这点,把下列行置于模块顶端:

import psyco ; psyco.jit()

from psyco.classes import *

第一行告诉 Psyco 对所有全局函数“发挥其魔力”。第二行(在 Python 2.2 及以上版本中)告诉 Psyco 对类方法执行相同的操作。为了更精确地确定 Psyco 的行为,可以使用下列命令:

上一页  1 2 3 4 5 6 7  下一页

Tags:Psyco Python 运行

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接