Правильный ответ во многом зависит от того, что вы делаете.
Сильно связанные с CPU (и блокирующие IO) задачи, такие как сжатие и рендеринг изображений, обычно выполняются с собственным кодом и собственными библиотеками.обычно освобождают GIL, пока они работают, что допускает параллелизм.Когда вы можете изолировать работу, интенсивно использующую процессор, с узким собственным вызовом, вы получаете параллелизм, собственную производительность, где она имеет значение, и удобство написания большей части кода на Python.
Не весь код имеет такой маленький размер,изолируемые блоки вычислительного кода, которые могут быть аккуратно реализованы в нативной библиотеке, но многое делают.