In Detail

Python is a programming language with a vibrant community known for its simplicity, code readability, and expressiveness. The massive selection of third party libraries make it suitable for a wide range of applications. This also allows programmers to express concepts in fewer lines of code than would be possible in similar languages. The availability of high quality numerically-focused tools has made Python an excellent choice for high performance computing. The speed of applications comes down to how well the code is written. Poorly written code means poorly performing applications, which means unsatisfied customers.

This book is an example-oriented guide to the techniques used to dramatically improve the performance of your Python programs. It will teach optimization techniques by using pure python tricks, high performance libraries, and the python-C integration. The book will also include a section on how to write and run parallel code.

This book will teach you how to take any program and make it run much faster. You will learn state-of the art techniques by applying them to practical examples. This book will also guide you through different profiling tools which will help you identify performance issues in your program. You will learn how to speed up your numerical code using NumPy and Cython. The book will also introduce you to parallel programming so you can take advantage of modern multi-core processors.

This is the perfect guide to help you achieve the best possible performance in your Python applications.

Approach

An exciting, easy-to-follow guide illustrating the techniques to boost the performance of Python code, and their applications with plenty of hands-on examples.

Who this book is for

If you are a programmer who likes the power and simplicity of Python and would like to use this language for performance-critical applications, this book is ideal for you. All that is required is a basic knowledge of the Python programming language. The book will cover basic and advanced topics so will be great for you whether you are a new or a seasoned Python developer.

I have been designing HPC software for more than 10 years, building applications in Fortran/C/C++ that I have the privilege to see run on supercomputers listed in the top 10 of the Top500. I don't expect Python to blast any of the languages above anytime soon for production environment.

Nonetheless...

I have also been advocating Python for prototyping (i.e. the "make it run" and "make it right" parts of HPC development mentioned in the book) for the last 3 years. I bought the book out of curiosity, with a clear interest in the last section dedicated to Parallel Processing, but also, given the price, expecting nothing more than a kind of shopping list of available libraries.

I have to say that I underestimated the work of the author. I ended up reading the whole book thoroughly. It's extremely well written, shares the best practices for what I consider is at the heart of HPC: memory, calling C when required (and only then), concurrent access and schema (e.g. master/slave). For each of the above, the book shares the tools, key concepts and best practices. HPC is full of young talented programmers who think they'll be able to work like cowboys or rock-stars. I didn't expect the book to show so brilliantly that it's quite the opposite: it focuses on method and self-control.

I only have two wishes for a future release:Get more tips/tools to debug heavily parallel programs, which usually is a pain in the neck. Let's go "print()" or not ? :)Get more complex and more "pythonic" examples. I would personally have loved an example of computation of a min() or max() over an iterator built out of product(), combinations() and permutations(). The volume of questions about that very subject in popular programming forums show that it's not always as straightforward as with range().

As a conclusion, yes, I would absolutely recommend the book to anyone willing to get started with building/prototyping HPC applications in Python. It shares very valuable insight and practices.