Nice introduction to the possibilities that Python awards in terms of parallel and concurrent programming. Do not expect a lot of detail into any one technique, but provides a lot of references for getting deep into any of the packages if needed.
My opinion: A very basic introductory book on various aspects of parallel programming as multithreading, multiprocessing and some CUDA stuff. Each module gets a description and some primitive examples, which you can alternatively read for free in the corresponding library documentations.
Conclusion: I do not recommend this book to advanced developers, because it is super introductory. I could not recommend this book to beginners either, because it has a lot of information that beginners do not need. If you are interested in select topics of the book you would be better off reading documentation.
Note: if you are interested in CUDA you should be familiar with C.
Other thoughts: I noticed quite a few misconceptions and small errors in this book, for example:
- on p.42 the author is claiming that he is changing an instance variable with `first_instance.common_value = 1500`. However, he is essentially creating a shadowing instance variable to the `common_value` class variable with the same name. That is a common pitfall and you can read more about it in "Class vs Instance Variable Pitfalls" section in Python Tricks by Dan Bader;
- on p.48 the author is suggesting to import everything from a library with `from do_something import *`, which is a bad practice. Any decent literature would suggest against importing everything from a library/module because possible namespace confusions. It would be much clearer to import all the required elements explicitly one by one (PEP 328).