Я буду запускать Python 24/7 в цикле while, вот пример такой программы:
while True:
print ("me again...")
Но когда я запускаю его, мой процессор уходит на 100%! Но я не хочу этого, так как моя программа будет работать в течение долгого времени и т. Д., И я не хочу, чтобы мой процессор сильно нагревался, есть ли способ предотвратить это?
Ответы:
В конце вашего цикла есть
time.sleep(xx)
за секунды, илиtime.sleep(x.x)
для представления частичных секунд(Пожалуйста , не забудьте импортировать библиотеку времени, например , так:
import time
)С хх, как можно выше, без ущерба для вашей программы. Прямо сейчас ваша программа всегда делает все как можно быстрее, вместо того, чтобы дать Пи время отдохнуть или сделать что-то еще.
источник
import time
?Предисловие
Убедитесь, что вам действительно нужно многократно запускать свою задачу. Это называется занятым ожиданием и почти всегда неоптимальным. Если ваша задача проверяет вывод подпроцесса, например, вы можете просто
subprocess.wait()
завершить его. Если ваша задача состоит в том, чтобы дождаться прикосновения к файлу или каталогу в файловой системе, вы можете использовать pyinotify для запуска вашего кода из события файловой системы, обработанного ядром.Ответ
Вот как вы пишете бесконечный цикл для занятого ожидания, не потребляя слишком много ресурсов процессора.
Python 2:
Python 3:
оценка
Как проверял @gnibbler в другом ответе , представленный код не должен занимать более 1% процессорного времени на последних компьютерах. Если он по-прежнему потребляет слишком много ресурсов ЦП с вашим кодом полезной нагрузки, подумайте об увеличении времени ожидания еще больше. С другой стороны, может потребоваться оптимизировать код полезной нагрузки для повторного выполнения. Например, кэширование может ускорить работу с неизмененными данными.
кредиты
Этот ответ пытается основываться на ответе @ user2301728 .
источник
У меня была такая же проблема, см. Мой вопрос на Stack Exchange . Решение было сочетание
time.sleep(0.01)
иnice
.nice
снижает процессор, доступный для приложения. Это, как я запустить приложение:nice -n 19
.источник
Вы также можете попробовать
nice -n 19 python myscript.py
.nice - это утилита * nix для установки приоритета ЦП задачи. 19 - самый большой вес и, следовательно, самый медленный параметр.
источник