Los programas suelen tener un 20% de código que ocupa el 80% del tiempo de ejecución.
Tradicionalmente se programaba en C y se optimizaba el 20% del código en ASM.
Esto mejora la velocidad con poco esfuerzo. Mejorar el restante 80% del código llevaría mucho esfuerzo y una ventaja muy pequeña en velocidad.
Python lleva incluida esta filosofía. Viene con muchas librerías incluidas que sirven para realizar la mayoría de las operaciones habituales intensivas en procesamiento. Si añadimos las librerías de terceros, nos encontramos con que ya están codificadas en C, optimizadas y libres de errores todo tipo de librerías:
PIL para manejo de imágenes
re para manipulación y búsqueda en cadenas de caracteres
numpy para manejo de cálculo matricial con grandes conjuntos de números
Jinja para manejo de plantillas
y muchas más.
Al final no merece la pena desarrollar en C funciones para manejo de imágenes o cualquier otra cosa. Es mucho más rápido, eficiente y libre de errores utilizar una librería ya disponible.
La diferencia en la velocidad de ejecución entre el código C y Python con librerías es bastante pequeña. Como mucho el C será dos veces más rápido. Muchas veces no compensa programar en C porque lleva mucho más trabajo de programación y un micro un poco más rápido apenas cuesta unos céntimos más.
He estado mirando las características de micropython
https://micropython.org/ y me ha sorprendido. Python necesita unos 2 megas de flash para funcionar, pero micropython ha bajado a 256k.
No he mirado más, pero si han implementado facilidades para tiempo real, es cuestión de tiempo que desplace al C. Hoy en día esa memoria se encuentra sin problemas por poco dinero.
Voy a seguirlo con más atención.
Saludos.