High-Performance Computing with Python 3.x

Video description

Python is a versatile programming language. Many industries are now using Python for high-performance computing projects.

This course will teach you how to use Python on parallel architectures. You'll learn to use the power of NumPy, SciPy, and Cython to speed up computation. Then you will get to grips with optimizing critical parts of the kernel using various tools. You will also learn how to optimize your programmer using Numba. You'll learn how to perform large-scale computations using Dask and implement distributed applications in Python; finally, you'll construct robust and responsive apps using Reactive programming.

By the end, you will have gained a solid knowledge of the most common tools to get you started on HPC with Python.

What You Will Learn

  • Use lambda expressions, generators, and iterators to speed up your code.
  • A solid understanding of multiprocessing and multithreading in Python.
  • Optimize performance and efficiency by leveraging NumPy, SciPy, and Cython for numerical computations.
  • Load large data using Dask in a distributed setting.
  • Leverage the power of Numba to make your Python programs run faster.
  • Build reactive applications using Python.

Audience

This course will help Python Programmers, Data Analysts and aspiring Data Science professionals familiar with basic Python programming to extend their skillset so as to scale their code and improve their code performance.

About The Author

Mohammed Kashif: Mohammed Kashif works as a Data Scientist at Nineleaps, India, dealing mostly with graph data analysis. Prior to this, he was working as a Python developer at Qualcomm. He completed his Master's degree in computer science from IIIT Delhi, with specialization in data engineering. His areas of interest include recommender systems, NLP, and graph analytics. In his spare time, he likes to solve questions on StackOverflow and help debug other people out of their misery. He is also an experienced teaching assistant with a demonstrated history of working in the higher-education industry.

Table of contents

  1. Chapter 1 : Getting Started with Faster and Efficient Python Code
    1. The Course Overview
    2. Exploring Python Datatypes
    3. Using Lambda Expressions
    4. Comprehensions for Speedups
    5. Generators and Iterators
    6. Using Decorators for Time Analysis
  2. Chapter 2 : Parallel Programming in Python
    1. Introduction to the Threading Module
    2. Using Threads with Locks
    3. Global Interpreter Lock
    4. Multiprocessing in Python
    5. Using a Pool of Workers
  3. Chapter 3 : Using NumPy and SciPy to Speedup Computations
    1. Introduction to NumPy
    2. Exploring NumPy Arrays
    3. Indexing in NumPy Arrays
    4. Operations and Broadcasting on NumPy Arrays
    5. Performance Comparison of NumPy Arrays
    6. Combining SciPy with NumPy
  4. Chapter 4 : Optimizing Python Code Using Cython
    1. Introduction to Cython
    2. Implement a Program Using Cython
    3. Time Analysis of a Cython Program
    4. Cython Data Types
    5. Using Cython Functions
    6. Combining NumPy and Cython
  5. Chapter 5 : Speeding Up Your Python Code Using Numba
    1. Introduction to Numba
    2. Setting Up Numba
    3. Creating Your First Program with Numba
    4. Digging Deeper into Numba
    5. Threading Using Numba
    6. Performance Comparison with Numba
  6. Chapter 6 : Distributed Computing Using Python
    1. Introduction to Synchronous Programming
    2. Understanding Asynchronous Programming
    3. Asynchronous Programming in Python
    4. Distributed Systems Architecture
  7. Chapter 7 : Distributed Programming Using Dask
    1. Introduction to Dask
    2. Setting Up Dask
    3. Blocked Algorithms and Dask Arrays
    4. Writing Your First Program Using Dask
    5. Using @delayed to Parallelize Code
    6. Performance Comparison with Dask
  8. Chapter 8 : Reactive Programming Using Python
    1. Introduction to Reactive Programming
    2. Observables and Observers
    3. Overview of Data Operators
    4. Reactive Programming in Python Using RxPy
    5. Using Data Operators with RxPy

Product information

  • Title: High-Performance Computing with Python 3.x
  • Author(s): Mohammed Kashif
  • Release date: February 2019
  • Publisher(s): Packt Publishing
  • ISBN: 9781789956252