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:
from __future__ import print_function
from __future__ import division
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
Python 3:
import time
while True:
range(10000) # some payload code
print("Me again") # some console logging
time.sleep(0.2) # sane sleep time of 0.1 seconds
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 .