The books Learning Python in chapter Execution Optimization Tools pag.30
...Execution Optimization Tools
CPython, Jython, and IronPython all implement the Python language in similar ways:
by compiling source code to byte code and executing the byte code on an appropriate
virtual machine. Still other systems, including the Psyco just-in-time compiler and the
Shedskin C++ translator, instead attempt to optimize the basic execution model. These
systems are not required knowledge at this point in your Python career, but a quick
look at their place in the execution model might help demystify the model in general.
The Psyco just-in-time compiler
The Psyco system is not another Python implementation, but rather a component that
extends the byte code execution model to make programs run faster. In terms of
Figure 2-2, Psyco is an enhancement to the PVM that collects and uses type information
while the program runs to translate portions of the program’s byte code all the way
down to real binary machine code for faster execution. Psyco accomplishes this
† Jython and IronPython are completely independent implementations of Python that compile Python source
for different runtime architectures. It is also possible to access Java and .NET software from standard CPython
programs: JPype and Python for .NET systems, for example, allow CPython code to call out to Java and .NET
components.
Translation without requiring changes to the code or a separate compilation step during
development.
Roughly, while your program runs, Psyco collects information about the kinds of objects
being passed around; that information can be used to generate highly efficient
machine code tailored for those object types. Once generated, the machine code then
replaces the corresponding part of the original byte code to speed your program’s overall
execution. The net effect is that, with Psyco, your program becomes much quicker
over time and as it is running. In ideal cases, some Python code may become as fast as
compiled C code under Psyco.
Because this translation from byte code happens at program runtime, Psyco is generally
known as a just-in-time (JIT) compiler. Psyco is actually a bit different from the JIT
compilers some readers may have seen for the Java language, though. Really, Psyco is
a specializing JIT compiler—it generates machine code tailored to the data types that
your program actually uses. For example, if a part of your program uses different data
types at different times, Psyco may generate a different version of machine code to
support each different type combination.
Psyco has been shown to speed Python code dramatically. According to its web page,
Psyco provides “2x to 100x speed-ups, typically 4x, with an unmodified Python interpreter
and unmodified source code, just a dynamically loadable C extension module.”
Of equal significance, the largest speedups are realized for algorithmic code written in
pure Python—exactly the sort of code you might normally migrate to C to optimize.
With Psyco, such migrations become even less important.
Psyco is not yet a standard part of Python; you will have to fetch and install it separately.
It is also still something of a research project, so you’ll have to track its evolution online.
In fact, at this writing, although Psyco can still be fetched and installed by itself, it
appears that much of the system may eventually be absorbed into the newer “PyPy”
project—an attempt to reimplement Python’s PVM in Python code, to better support
optimizations like Psyco.
Perhaps the largest downside of Psyco is that it currently only generates machine code
for Intel x86 architecture chips, though this includes Windows and Linux boxes and
recent Macs. For more details on the Psyco extension, and other JIT efforts that may
I think this is enough to say that psyco is
faster.by.