Eu vou ter um Python executado 24/7 em um loop while, aqui está um exemplo do tipo de programa:
while True:
print ("me again...")
Mas quando eu o executo, minha CPU chega a 100%! Mas não quero isso, já que meu programa será executado por longos períodos de tempo etc. e não quero que minha CPU fique muito quente. Existe alguma maneira de impedir isso?
Respostas:
No final do seu loop, tenha um
time.sleep(xx)
por segundos outime.sleep(x.x)
para representar segundos parciais(Por favor, lembre-se de importar a biblioteca de tempo, assim:
import time
)Com xx sendo o mais alto possível, sem afetar adversamente o seu programa. No momento, seu programa está sempre fazendo tudo o mais rápido possível, em vez de dar algum tempo para o Pi descansar ou fazer outra coisa.
fonte
import time
?Prefácio
Certifique-se de que realmente precisa executar sua tarefa repetidamente. Isso é chamado de espera ocupada e quase sempre abaixo do ideal. Se sua tarefa estiver verificando a saída de um subprocesso, você poderá
subprocess.wait()
concluir, por exemplo. Se sua tarefa é esperar que um arquivo ou diretório no sistema de arquivos seja tocado, você pode usar o pyinotify para obter seu código acionado a partir do evento do sistema de arquivos tratado pelo kernel.Responda
É assim que você escreve loop infinito para espera ocupada sem consumir muita CPU.
Python 2:
Python 3:
Avaliação
Como o @gnibbler testou em outra resposta , o código apresentado não deve consumir mais de 1% da CPU em máquinas recentes. Se ele ainda consome muita CPU com seu código de carga, considere aumentar o tempo para dormir ainda mais. Por outro lado, o código da carga útil pode precisar ser otimizado para execução repetida. Por exemplo, o armazenamento em cache pode acelerar a execução de dados inalterados.
Créditos
Esta resposta tenta se basear na resposta de @ user2301728 .
fonte
Eu tive o mesmo problema, veja minha pergunta no Stack Exchange . A solução foi uma combinação de
time.sleep(0.01)
enice
.nice
reduz a CPU disponível para um aplicativo. É assim que eu iniciar o app:nice -n 19
.fonte
Você também pode tentar
nice -n 19 python myscript.py
.nice é um utilitário * nix para definir a prioridade da CPU de uma tarefa. 19 é o maior peso e, consequentemente, a configuração mais lenta.
fonte