Haré que Python se ejecute 24/7 en un ciclo while, aquí hay un ejemplo del tipo de programa:
while True:
print ("me again...")
Pero cuando lo ejecuto, ¡mi CPU llega al 100%! Pero no quiero eso, ya que mi programa se ejecutará durante largos períodos de tiempo, etc. y no quiero que mi CPU se caliente mucho , ¿hay alguna forma de evitar esto?
Respuestas:
Al final de tu ciclo tienes un
time.sleep(xx)
por segundos, otime.sleep(x.x)
para representar segundos parciales(Por favor, recuerde que debe importar el tiempo en la biblioteca, así:
import time
)Con xx siendo lo más alto posible sin afectar negativamente a su programa. En este momento, su programa siempre está haciendo todo lo más rápido que puede, en lugar de darle tiempo para que el Pi descanse o haga otra cosa.
fuente
import time
?Prefacio
Asegúrese de que realmente necesita ejecutar su tarea repetidamente. Esto se llama espera ocupada y casi siempre subóptima. Si su tarea está verificando la salida de un subproceso, puede simplemente
subprocess.wait()
terminarla, por ejemplo. Si su tarea es esperar a que se toque un archivo o directorio en el sistema de archivos, puede usar pyinotify para activar su código desde el evento del sistema de archivos manejado por el núcleo.Responder
Así es como se escribe un bucle infinito para la espera ocupada sin consumir demasiada CPU.
Python 2:
Python 3:
Evaluación
Como @gnibbler probó en otra respuesta , el código presentado no debe consumir más del 1% de CPU en máquinas recientes. Si todavía consume demasiada CPU con su código de carga útil, considere aumentar el tiempo para dormir aún más. Por otro lado, es posible que el código de carga útil deba optimizarse para la ejecución repetida. Por ejemplo, el almacenamiento en caché podría acelerar la ejecución de datos sin cambios.
Créditos
Esta respuesta intenta basarse en la respuesta de @ user2301728 .
fuente
Tuve el mismo problema, vea mi pregunta en Stack Exchange . La solución fue una combinación de
time.sleep(0.01)
ynice
.nice
reduce la CPU disponible para una aplicación. Esta es la forma de empezar la aplicación:nice -n 19
.fuente
También podrías intentarlo
nice -n 19 python myscript.py
.nice es una utilidad * nix para establecer la prioridad de CPU de una tarea. 19 es el peso más grande y, en consecuencia, el ajuste más lento.
fuente