Book Image

Learning Cython Programming (Second Edition) - Second Edition

By : Philip Herron
Book Image

Learning Cython Programming (Second Edition) - Second Edition

By: Philip Herron

Overview of this book

Cython is a hybrid programming language used to write C extensions for Python language. Combining the practicality of Python and speed and ease of the C language it’s an exciting language worth learning if you want to build fast applications with ease. This new edition of Learning Cython Programming shows you how to get started, taking you through the fundamentals so you can begin to experience its unique powers. You’ll find out how to get set up, before exploring the relationship between Python and Cython. You’ll also look at debugging Cython, before moving on to C++ constructs, Caveat on C++ usage, Python threading and GIL in Cython. Finally, you’ll learn object initialization and compile time, and gain a deeper insight into Python 3, which will help you not only become a confident Cython developer, but a much more fluent Python developer too.
Table of Contents (14 chapters)
Learning Cython Programming Second Edition
About the Author
About the Reviewer

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 –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
    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, and finally...