Um processo de uso da CPU não muda para uma prioridade diferente

0

Eu escrevi um loop infinito em python para imprimir Não! na saída.

while True:
    print("No!")

Quando eu o executo, vejo seu processo (pythonw.exe) no Gerenciador de Tarefas do Windows, que usa 60% da CPU. Eu cliquei com o botão direito do mouse em seu processo e mudei a prioridade para Low . use 60% de CPU novamente! Então mudo a prioridade para Real-Time . Ainda usa 60% da CPU!

Atualização: Meu uso total de CPU para todo o processo é de 80% !!! e 20% é grátis! Por que esse loop de python não usa isso 20% ?!

O que há de errado com prioridade? Por que isso não muda?

    
por TheGoodUser 26.09.2014 / 18:30

1 resposta

2

A prioridade determina qual encadeamento será executado quando vários encadeamentos estiverem competindo pelo tempo de CPU. Se nada mais quiser, a (s) thread (s) do seu programa terão até 100% de tempo de CPU, como e quando necessário, independentemente da prioridade.

No seu caso, o processo Python é o único que precisa de muito tempo de CPU, por isso vai receber tudo o que ele pede. Se o seu sistema estivesse ocupado, então você veria sua queda de 60% muito mais do que se tivesse prioridade normal.

Você deve testá-lo em relação a outro programa que consome muita CPU, rodando ao mesmo tempo, por exemplo, em um teste CMD shell run.cmd contendo:

:Loop
dir /s c:\
goto Loop

Depois, você verá os efeitos da alteração da prioridade do seu processo concorrente. Observe que os requisitos de CPU deste exemplo irão variar, dependendo da velocidade da CPU, do número de arquivos em c:\ e dos tamanhos de cache de disco; redirecionando a saída dir para >nul: aumentará a carga da CPU.

    
por 26.09.2014 / 18:43