PSyco是款比较专业的编译器工具。PSyco官方版可以在Python解释器编译代码时自动优化,将其使用C实现,并针对循环操作进行一些特殊的优化。并且PSyco对于密集计算型程序可以显著提升程序的执行速度。

PSyco
官方版 v1.6人工检测,安全无毒
190.00KB
简体
WinAll
编译软件
121次
2023-11-24
21
软件介绍
PSyco是款比较专业的编译器工具。PSyco官方版可以在Python解释器编译代码时自动优化,将其使用C实现,并针对循环操作进行一些特殊的优化。并且PSyco对于密集计算型程序可以显著提升程序的执行速度。
软件特色
PSyco官方版可以在Python解释器 编译代码时自动优化,将其使用C实现,并针对循环操作进行一些特殊的优化。经过这些优化,程序的性能将会得到提升,在跨平台环境下尤为明显。
软件功能
对于密集计算型程序,PSyco官方版可以显著提升程序的执行速度。实际的提升决定于程序的具体实现,曾经有人获得了高达100倍的提升,也有的时候因为需要额外加载 Psyco 模块反倒带来了轻微的性能下降。经过调查,在典型的应用上,Psyco 平均可以提供 1.5至4 倍的性能提升。这帮助 Python 的性能达到了 Smalltalk 和 Scheme 的水平,但是仍然与 Fortran 与 C这样的编译语言,或是一些 JIT 语言如 C# 和 Java有所差距。
Psyco 宣称自己是非常易用的,事实也确实如此。
最简单的 Psyco 优化只需要在程序开始处放置两行代码:
import psyco
psyco.full()
这两行指令会让 Python解释器 加载 Psyco 模块,并对接下来的脚本进行优化。对于小的程序来说,这相当的方便;但是大型工程来说,加入这些的工作量并不低,通常可以借助自动化脚本来完成。
使用方法
要完全理解 Psyco,您可能需要很好地掌握 Python 解释器的 eval_frame() 函数和 i386 汇编语言。遗憾的是,我自己不能对其中任何一项发表专家性的意见 - 但是我想我可以大致不差地概述 Psyco。
在常规的 Python 中,eval_frame() 函数是 Python 解释器的内循环。eval_frame() 函数主要察看执行上下文中的当前字节码,并将控制向外切换到一个适合实现该字节码的函数。支持函数将做什么的具体细节通常取决于保存在内存中的各种 Python 对象的状态。简单点说,添加 Python 对象“2”和“3”和添加对象“5”和“6”会产生不同的结果,但是这两个操作都以类似的方式分派。
Psyco 用复合求值单元替代 eval_frame() 函数。Psyco 有几种方法可以用来改进 Python 所进行的操作。首先,Psyco 将操作编译成有点优化的机器码;由于机器码需要完成的工作和 Python 的分派函数所要做的事一样,所以其本身只有些许改进。而且,Psyco 编译中的“专门的”内容不仅仅是对 Python 字节码的选择,Psyco 也要对执行上下文中已知的变量值进行专门化。例如,在类似于下面的代码中,变量 x 在循环持续时间内是可知的:
x = 5
l = []
for i in range(1000):
l.append(x*i)
该段代码的优化版本不需要用“x 变量/对象的内容”乘每个 i,与之相比,简单地用 5 乘以每个 i 所用的开销较少,省略了查找/间接引用这一步。
除为小型操作创建特定于 i386 的代码之外,Psyco 还高速缓存这个已编译的机器码以备今后重用。如果 Psyco 能够识别出特定的操作和早先所执行的(“专门化的”)操作一样,那么,它就能依靠这个高速缓存的代码而不需要再次编译代码段。这样就节省了一些时间。
但是,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 的行为,可以使用下列命令:
psyco.bind(somefunc) # or method, class
newname = psyco.proxy(func)
第二种形式把 func 作为标准的 Python 函数,但是优化了涉及 newname 的调用。除了测试和调试之外的几乎所有的情况下,您都将使用 psyco.bind() 形式。
小编寄语
PSyco是一款非常实用的编译软件,深受用户喜爱,广受好评。飞速下载站还提供其他编译软件下载,如webox盒子,ApkTool助手,Il2CppDumper,有需要的同学快点击下载吧!
Javascrīpt框架
最新版1.9.1 / 120MB
2.4K 119 2025-02-05
Gradle——通用灵活的构建工具
官方中文版 v8.14.3 / 120MB
843 46 2025-07-17
可视化网页设计软件
最新版 v7.1 / 120MB
599 33 2025-04-29
apk文件的系统安全类软件
最新版 v2.2 / 120MB
594 33 2025-03-12
自由/开源版本控制的软件
官方版v1.14.2 / 120MB
361 20 2024-07-30
JAVA反编译工具
中文版 v1.6.6 / 120MB
306 17 2024-05-28
反汇编和调试工具
最新版v2.1.0.2 / 120MB
228 12 2024-07-16
exe文件修改工具
官方版 v6.5 / 120MB
204 11 2023-10-26
APK反编译软件
官方版 v5.8 / 120MB
147 8 2023-11-02
功能强大的il2cpp反编译工具
官方版 v1.0.19 / 120MB
144 31 2023-11-24