Первое: тот факт, что CPython является интерпретатором байт-кода, не должен иметь значения для вас, как пользователя python. Продолжайте писать код и не беспокойтесь о том, как он превращается в действие.
Итак, чтобы ответить на ваш вопрос и удовлетворить ваше любопытство, вот что происходит: CPython читает исходный код python и компилирует его в байт-код python, который хранится в файле .pyc. Затем он выполняет этот код, используя интерпретатор байт-кода. Этот дизайн отделяет синтаксический анализ python от исполнения, что упрощает обе части интерпретатора.
Jython является только передней половиной - он читает исходный код Python и выводит байтовые коды Java, которые затем интерпретируются JVM. Это та же архитектура, что и у CPython, с двумя примечательными отличиями: во-первых, байт-код java стандартизирован и задокументирован, а байт-код CPython считается внутренним по отношению к python и может изменяться в любое время. Второе: JVM намного сложнее, чем интерпретатор CPython. JVM имеет один из самых продвинутых движков JIT в мире, а интерпретатор CPython довольно прост.