Book Image

Learning Cython Programming (Second Edition) - Second Edition

By : Philip Herron
Book Image

Learning Cython Programming (Second Edition) - Second Edition

By: Philip Herron

Overview of this book

Cython is a hybrid programming language used to write C extensions for Python language. Combining the practicality of Python and speed and ease of the C language it’s an exciting language worth learning if you want to build fast applications with ease. This new edition of Learning Cython Programming shows you how to get started, taking you through the fundamentals so you can begin to experience its unique powers. You’ll find out how to get set up, before exploring the relationship between Python and Cython. You’ll also look at debugging Cython, before moving on to C++ constructs, Caveat on C++ usage, Python threading and GIL in Cython. Finally, you’ll learn object initialization and compile time, and gain a deeper insight into Python 3, which will help you not only become a confident Cython developer, but a much more fluent Python developer too.
Table of Contents (14 chapters)
Learning Cython Programming Second Edition
About the Author
About the Reviewer

Messaging server

The messaging server is an example of something that would be highly concurrent; let's say we want to embed a web server into this to show the list of clients that are connected to the server. If you look at the flask, you can see how easily you can have a full web container in about eight lines of code.

The messaging server is asynchronous; therefore, it is callback based in C code. These callbacks can then call into Python roster object via Cython. Then, we can iterate over the roster dictionary to get online clients and simply return some JSON as a web service very easily reusing Python code and no need to write anything in C/C++.

It's important to note when embedding web servers is that they start a lot of threads. Calling the start web server function will block until it will exit, meaning if we start the web server first, we won't have the messaging server running concurrently. Also, due to the web-server function blocking, if we start it on a separate thread, it will...