Cover
Table of Contents
About the Author
Preface
1. Cython Won't Bite
Installing Cython
Emacs mode
Getting the code examples
Getting started – Hello World
Using distutils with Cython
Calling C functions from Python
Type conversion in Cython
Summary
2. Understanding Cython
Linking models
Cython keyword – cdef
Structs
Enums
Typedef and function pointers
The public keyword
Keyword cpdef
Logging from C/C++ into Python
Using Python ConfigParser from C/C++
Callbacks from Python to C/C++
Cython PXD
Integration with build systems
Python Distutils
GNU/Autotools
Summary
3. Extending Applications
Cython pure Python code
Compiling pure Python code
Avoid Makefiles – pyximport
Python garbage collector
Extending Tmux
Tmux build system
Embedding Python
Cythonizing struct cmd_entry
Implementing a Tmux command
Hooking everything together
Summary
4. Debugging Cython
Using GDB with Cython
Running cygdb
Cython caveats
Type checking
Dereference operator (*)
Python exceptions
C/C++ iterators
Boolean error
Const keyword
Multiple Cython inputs
Struct initialization
Calling into pure Python modules
Summary
5. Advanced Cython
Cython and C++
Namespaces
Classes
C++ new and del keyword
Exceptions
Bool type
Overloading
Templates
Static class member attribute
Calling C++ functions – Caveat
Namespaces – Caveat
Python distutils
Python threading and GIL
Atomic instructions
Read/write lock
Cython keywords
Messaging server
Caveat on GIL
Unit testing the native code
Preventing subclassing
Parsing large amounts of data
Summary
6. Further Reading
Overview
OpenMP support
Compile time preprocessor
Python 3
PyPy
AutoPXD
Pyrex and Cython
SWIG and Cython
Cython and NumPy
Numba versus Cython
Parakeet and Numba
Relevant Links
Summary
Index