To main page | 3dengine.org
Cython and Mingw32
Cython is a compiled Python-like language for making Python modules.
Unlike Python it's compiled. Like Python, it has very simple syntax, which is derived from Python with addition of "cdef" keyword with very many meanings.
Why use it??
1) You can speed up OpenGL code using PyOpenGL up to 100 times
2) The code is converted to C and compiled, so you're not distributing source code
Simple example under Windows
1. Install Python (assumed)
2. Install
Cython (via
easy_install: "easy_install cython").
3. Get Mingw32 (with recent GCC) from
here. Note that the original Mingw32 GCC (3.4) isn't anymore supported and has bugs.
4. Install Mingw32 (link above)
5. Setup
PATH variable to include your C:/Mingw32/bin/ (or whereever you installed Mingw32)
6. Create file
test.pyx
cdef int a
for a in range(10):
b = a + 1
7. Create file
setup.py
from distutils.core import setup
from distutils.extension import Extension
from Pyrex.Distutils import build_ext
setup(
name = "TestModule",
ext_modules=[
Extension("test", ["test.pyx"])
],
cmdclass = {'build_ext': build_ext}
)
8. Create file
build.bat
python setup.py build_ext
pause
9. Run
build.bat
After that you get
test.pyx file, which is imported into Python simply as
import test
The output
test.pyx is a
dll file if you need to know that.
This code will run maybe hundreds times faster than the same code under Python.
Remember that without
cdef you're not going to see any real speed improvement!
See also
OpenGL and Cython