Eu suponho que você tenha uma CPU com 8 núcleos virtuais (quad-core com hyper-threading provavelmente)? Isso significa que um segmento de CPU / núcleo virtual totalmente carregado equivale a 12,5% de carga total.
O interpretador Python é um aplicativo que só é executado como um único processo por padrão e, portanto, não é capaz de tirar proveito de mais de um núcleo virtual. Mesmo se o código que você executar com ele usar multithreading, ele ainda usará apenas um segmento de CPU / núcleo virtual, por causa do GIL (intérprete global trancar) .
Somente se seu programa em Python usar o multiprocessamento , que de fato inicia várias instâncias do interpretador Python e permite que eles executem suas tarefas verdadeiramente paralelas, você pode aproveitar vários núcleos virtuais / threads de CPU. (Como apontou @SargeBorsch em seu comentário, há também algumas maneiras avançadas de conseguir isso sem multiprocessamento, mas normalmente não é algo que você escreve rapidamente.)