In this chapter, we will cover the following topics:
Accelerating pure Python code with Numba and Just-In-Time compilation
Accelerating array computations with Numexpr
Wrapping a C library in Python with ctypes
Accelerating Python code with Cython
Optimizing Cython code by writing less Python and more C
Releasing the GIL to take advantage of multi-core processors with Cython and OpenMP
Writing massively parallel code for NVIDIA graphics cards (GPUs) with CUDA
Writing massively parallel code for heterogeneous platforms with OpenCL
Distributing Python code across multiple cores with IPython
Interacting with asynchronous parallel tasks in IPython
Parallelizing code with MPI in IPython
Trying the Julia language in the notebook