Compiling pure Python code
Another use for Cython is to compile Python code. For example, if we go back to the primes
example, we can do the following:
$ cython pyprimes.py –embed
$ gcc -g -O2 pyprimes.c -o pyprimes `python-config --includes –libs`
Then, we can compare the three different versions of the same program: the Cython version using cdef
for native types, the pure Python version running as a Python script, and finally, the Cython-compiled pure Python version, which results in an executable binary of Python code:
- First, the Cython version using native types:
$ time ./primes real 0m0.050s user 0m0.035s sys 0m0.013s
- Next, the executable pure Python version:
$ time ./pyprimes real 0m0.139s user 0m0.122s sys 0m0.013s
- And finally, the Python script version:
philips-macbook:primes redbrain$ time python pyprimes.py real 0m0.184s user 0m0.165s sys 0m0.016s
The pure Python version runs the slowest, the compiled Python version runs a little bit faster...