Предисловие
Убедитесь, что вам действительно нужно многократно запускать свою задачу. Это называется занятым ожиданием и почти всегда неоптимальным. Если ваша задача проверяет вывод подпроцесса, например, вы можете просто subprocess.wait()
завершить его. Если ваша задача состоит в том, чтобы дождаться прикосновения к файлу или каталогу в файловой системе, вы можете использовать pyinotify для запуска вашего кода из события файловой системы, обработанного ядром.
Ответ
Вот как вы пишете бесконечный цикл для занятого ожидания, не потребляя слишком много ресурсов процессора.
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
оценка
Как проверял @gnibbler в другом ответе , представленный код не должен занимать более 1% процессорного времени на последних компьютерах. Если он по-прежнему потребляет слишком много ресурсов ЦП с вашим кодом полезной нагрузки, подумайте об увеличении времени ожидания еще больше. С другой стороны, может потребоваться оптимизировать код полезной нагрузки для повторного выполнения. Например, кэширование может ускорить работу с неизмененными данными.
кредиты
Этот ответ пытается основываться на ответе @ user2301728 .