Interpretador Python usando apenas 12% da CPU

25

Estou usando o python no Ubuntu para análise de texto. Apesar da grande quantidade de trabalho que o programa está fazendo, o uso da CPU, como mostrado no monitor do sistema, permanece consistentemente em 12%.

Alterei a prioridade do programa de Normal para Very High , mas isso não teve efeito.

O que está limitando a quantidade de uso da CPU que meu programa python pode obter e como posso alterar isso, para que o programa possa utilizar mais energia da CPU?

    
por Matthias Herrmann 24.08.2017 / 15:33

2 respostas

72

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.)

    
por Byte Commander 24.08.2017 / 15:56
18

Outra possibilidade, menos provável neste caso, é que o programa esteja ligado ao disco, ou seja, ele está lendo e gravando de / para o disco que está lento, e a CPU está aguardando o disco.

    
por jmmcd 24.08.2017 / 20:46

Tags