Why you might want to use extensions
It's not easy to say when it is a reasonable decision to write extensions in C/C++. The general rule of thumb could be, never, unless you have no other choice. But this is a very subjective statement that leaves a lot of room for interpretation of what is not doable in Python. In fact, it is hard to find a thing that cannot be done using pure Python code, but there are some problems where extensions may be especially useful:
Bypassing GIL (Global Interpreter Lock) in the Python threading model
Improving performance in critical code sections
Integrating third-party dynamic libraries
Integrating source code written in different languages
Creating custom datatypes
For example, the core language constraints such as GIL can easily be overcome with a different approach to concurrency, such as green threads or multiprocessing instead of a threading model.
Improving performance in critical code sections
Let's be honest. Python is not chosen by developers because of performance...