Synopses & Reviews
Winner of the 2014 Jolt Award for "Best Book"
“Whether you are an experienced programmer or are starting your career, Python in Practice is full of valuable advice and example to help you improve your craft by thinking about problems from different perspectives, introducing tools, and detailing techniques to create more effective solutions.”
—Doug Hellmann, Senior Developer, DreamHost
If you’re an experienced Python programmer, Python in Practice will help you improve the quality, reliability, speed, maintainability, and usability of all your Python programs.
Mark Summerfield focuses on four key themes: design patterns for coding elegance, faster processing through concurrency and compiled Python (Cython), high-level networking, and graphics. He identifies well-proven design patterns that are useful in Python, illuminates them with expert-quality code, and explains why some object-oriented design patterns are irrelevant to Python. He also explodes several counterproductive myths about Python programming—showing, for example, how Python can take full advantage of multicore hardware.
All examples, including three complete case studies, have been tested with Python 3.3 (and, where possible, Python 3.2 and 3.1) and crafted to maintain compatibility with future Python 3.x versions. All code has been tested on Linux, and most code has also been tested on OS X and Windows. All code may be downloaded at www.qtrac.eu/pipbook.html.
Coverage includes
- Leveraging Python’s most effective creational, structural, and behavioral design patterns
- Supporting concurrency with Python’s multiprocessing, threading, and concurrent.futures modules
- Avoiding concurrency problems using thread-safe queues and futures rather than fragile locks
- Simplifying networking with high-level modules, including xmlrpclib and RPyC
- Accelerating Python code with Cython, C-based Python modules, profiling, and other techniques
- Creating modern-looking GUI applications with Tkinter
- Leveraging today’s powerful graphics hardware via the OpenGL API using pyglet and PyOpenGL
Synopsis
Winner of the 2014 Jolt Award for "Best Book"
"Whether you are an experienced programmer or are starting your career, Python in Practice is full of valuable advice and example to help you improve your craft by thinking about problems from different perspectives, introducing tools, and detailing techniques to create more effective solutions."
--
Doug Hellmann, Senior Developer, DreamHost
If you're an experienced Python programmer,
Python in Practice will help you improve the quality, reliability, speed, maintainability, and usability of all your Python programs.
Mark Summerfield focuses on four key themes: design patterns for coding elegance, faster processing through concurrency and compiled Python (Cython), high-level networking, and graphics. He identifies well-proven design patterns that are useful in Python, illuminates them with expert-quality code, and explains why some object-oriented design patterns are irrelevant to Python. He also explodes several counterproductive myths about Python programming--showing, for example, how Python can take full advantage of multicore hardware.
All examples, including three complete case studies, have been tested with Python 3.3 (and, where possible, Python 3.2 and 3.1) and crafted to maintain compatibility with future Python 3.x versions. All code has been tested on Linux, and most code has also been tested on OS X and Windows. All code may be downloaded at www.qtrac.eu/pipbook.html.
Coverage includes
- Leveraging Python's most effective creational, structural, and behavioral design patterns
- Supporting concurrency with Python's multiprocessing, threading, and concurrent.futures modules
- Avoiding concurrency problems using thread-safe queues and futures rather than fragile locks
- Simplifying networking with high-level modules, including xmlrpclib and RPyC
- Accelerating Python code with Cython, C-based Python modules, profiling, and other techniques
- Creating modern-looking GUI applications with Tkinter
- Leveraging today's powerful graphics hardware via the OpenGL API using pyglet and PyOpenGL
Synopsis
Python in Practice presents Python programming technologies and techniques to help programmers write code that's elegant, maintainable, and fast. Drawing on both the standard library and important third-party libraries, the book shows how to achieve significant speedups using high-level concurrency and compiled Python. The book is packed with examples and ideas that illustrate a wide range of techniques and modules, encompassing high-level networking, 2D graphics, 3D graphics, and GUI programming---including concurrent GUI programming. The book is aimed at programmers who want to take their Python programming to the next level.
About the Author
Mark Summerfield is a computer science graduate with many years of experience working in the software industry, primarily as a programmer and documenter. Mark owns Qtrac Ltd. (www.qtrac.eu), where he works as an independent programmer, author, editor, and trainer, specializing in the C++, Go, and Python languages, and the Qt, PyQt, and PySide libraries. His books include Programming in Go (Addison-Wesley, 2012), Advanced Qt Programming (Prentice Hall, 2011), Programming in Python 3, Second Edition (Addison-Wesley, 2010), C++ GUI Programming with Qt 4, Second Edition (with Jasmin Blanchette, Prentice Hall, 2008), and Rapid GU Programming with Python and Qt (Prentice Hall, 2007).
Table of Contents
Foreword xiii
Introduction 1
Acknowledgments 3
Chapter 1: Creational Design Patterns 5
1.1. Abstract Factory Pattern 5
1.2. Builder Pattern 11
1.3. Factory Method Pattern 17
1.4. Prototype Pattern 24
1.5. Singleton Pattern 26
Chapter 2: Structural Design Patterns 29
2.1. Adapter Pattern 29
2.2. Bridge Pattern 34
2.3. Composite Pattern 40
2.4. Decorator Pattern 48
2.5. Façade Pattern 59
2.6. Flyweight Pattern 64
2.7. Proxy Pattern 67
Chapter 3: Behavioral Design Patterns 73
3.1. Chain of Responsibility Pattern 74
3.2. Command Pattern 79
3.3. Interpreter Pattern 83
3.4. Iterator Pattern 95
3.5. Mediator Pattern 100
3.6. Memento Pattern 106
3.7. Observer Pattern 107
3.8. State Pattern 111
3.9. Strategy Pattern 116
3.10. Template Method Pattern 119
3.11. Visitor Pattern 123
3.12. Case Study: An Image Package 124
Chapter 4: High-Level Concurrency 141
4.1. CPU-Bound Concurrency 144
4.2. I/O-Bound Concurrency 155
4.3. Case Study: A Concurrent GUI Application 164
Chapter 5: Extending Python 179
5.1. Accessing C Libraries with ctypes 180
5.2. Using Cython 187
5.3. Case Study: An Accelerated Image Package 198
Chapter 6: High-Level Networking 203
6.1. Writing XML-RPC Applications 204
6.2. Writing RPyC Applications 219
Chapter 7: Graphical User Interfaces with Tkinter 231
7.1. Introduction to Tkinter 233
7.2. Creating Dialogs with Tkinter 235
7.3. Creating Main-Window Applications with Tkinter 253
Chapter 8: OpenGL 3D Graphics 263
8.1. A Perspective Scene 264
8.2. An Orthographic Game 272
Appendix A: Epilogue 283
Appendix B: Selected Bibliography 285
Index 289