Во первых, строго говоря, Python компилируется в байт-код, как и Java.
Насколько я знаю ситуацию, довольно большой вклад в медленную работу Python дает его динамическая природа: когда виртуальная машина Python встречает выражение типа a + b, ей надо проверить, какие именно типы имеют величины из этих двух переменных, определены ли специальные методы типа __add__() и т.п. - это может занять вагон времени, особенно если происходит внутри цикла.
Хочу заметить, что доступные компиляторы для Python: PyPy (JIT), Numba (JIT, для численных расчетов), Cython (конвертер в C) - основаны на выводе типов и/или специальных аннотациях, иначе большой скорости программы не будет и после них.
Я на эту тему пару докладов делал в прошлом году:
https://www.youtube.com/watch?v=aVriaZJDHks (на английском) и
https://dev.by/lenta/space-blog/pycon-belarus-2016 (на русском).