Python is a simple language it basically goes like this
“I can go full dynamic and easy but I will be slow, I could be super fast too but kiss goodbye to my dynamic nature and ease of use. Pick your poison”
I don’t think it exaggeration to claim that Python has most performance orientated libraries than any language out there, including C++. I once even found a Assembly inliner making it possible to go full low level in Python.
A small sample can be found here
but that’s not all, for example there is no mention of PyCUDA etc. Probably what you heard was about the async module which comes included with Python , there are so many libraries out there makes it kinda hard not to find what you looking for. Even wrapping your own C code for Python is actually pretty easy too.
This is how I do my commercial project, I made a plugin system that allows me to write C code without having to rebuild Blender(its also a fun way to make compiler go from 15 seconds to 2 seconds) and have my C functions automatically wrapped for Python. I do drawing in C (using Blender internal functions) and event handling in Python and so far it has been blazing fast. When I want performance I drop to C, for the rest I use Python.
This is why Python replaced C++ as AI language. They just wrapped their C++ libraries for Python. So yes you can definetly run Python on multiple cores, embeded devices and GPUs, I do not think there is a thing that Python cannot do. Problem is the more you optimize code the more it feels like coding in C which kinda defeats the purpose of using Python in the first place. Which is why C and C++ are not going away any time soon.