Cкорость выполнения может не всегда быть такой же, как у полностью компилируемых и низкоуровневых языков, подобных С и C++. Хотя и относительно редко в наши дни, но при решении некоторых задач может все же возникать необходимость “приблизиться к железу” за счет использования низкоуровневых языков.
Выражаясь кратко, современные стандартные реализации Python компилируют (т.е. транслируют) операторы исходного кода в промежуточный формат, известный как байт-код, и затем интерпретируют этот байт-код. Байт-код обеспечивает переносимость, т.к. он представляет собой независимый от платформы формат. Тем не менее, поскольку код Python обычно не компилируется до машинного кода, некоторые программы будут выполняться в Python медленнее, чем в полностью компилируемом языке наподобие С.
Система РуРу, способна достичь ускорения в десять-сто раз при выполнении определенного кода за счет дополнительной компиляции в ходе запуска программы, но она является отдельной альтернативной реализацией.
Например, численное программирование и анимация часто нуждаются в том, чтобы, по крайней мере, их основные компоненты перемалывания чисел выполнялись со скоростью С (или быстрее). Если вы работаете в такой предметной области, то все равно можете применять Python — просто вынесите части приложения, которые требуют оптимальной скорости, в скомпилированные расширения, и свяжите их со своей системой для использования в сценариях Python.
Главным примером этой двуязычной стратегии является расширение численного программирования для Python под названием NumPy за счет объединения скомпилированных и оптимизированных библиотек численных расширений с языком Python расширение NumPy превращает Python в инструмент численного программирования, который одновременно эффективен и прост в применении. При необходимости такие расширения предоставляют мощный инструмент оптимизации.