Chapter 5. High-Performance Computing
In this chapter, we will cover the following topics:
- Using Python to write faster code
 - 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
 - Distributing Python code across multiple cores with IPython
 - Interacting with asynchronous parallel tasks in IPython
 - Performing out-of-core computations on large arrays with Dask
 - Trying the Julia programming language in the Jupyter Notebook