Very informative book, even though it's mostly talking about python 2.7 (the current stable version is 3.7).
What I found most useful were:
1. Talks about various tools/interpreters/compilers to help speed up python computations. Notable mentions: PyPy, Cython, numpy, numba, numexpr
2. Various profilers: line_profiler (for time), memory_profiler (for memory...), pympler (again, for memory). Heapy.guppy would have been awesome, but it's py 2.7 only (for memory profiling...for now?)
3. The ubiquitous dict - its workings were explained in great details. Too bad however that in a recent python version, the dict was greatly refactored - now it retains insertion order, and takes up less space.
4. The discussion about how how the processor caches work, and how python lists are not optimized to take advantage of them was really cool. We have array.array, numpy and numexpr to the rescue here
5. Using less RAM - that chapter was nice because in addition to finding out (in the previous chapters) how contiguous arrays are better than lists of pointers, here the author presents some data structures and algorithms for storing/searching through strings a lot faster. These were pretty new to me: tries and DAWGs ftw! Also some lossy data structures are presented: The *LogLog* family, the Morris counter, the K-Minimum Values, and the bloom filter.
The final chapter then showcases the technology stack of a few companies. It's always interesting to hear what other people are doing.
Even if slightly dated, this is an awesome book! I'd recommend it to anyone who spent at least one year programming Python.