Ich werde Python 24/7 in einer while-Schleife ausführen lassen. Hier ist ein Beispiel für diese Art von Programm:
while True:
print ("me again...")
Aber wenn ich es laufen lasse, geht meine CPU zu 100%! Aber ich möchte das nicht, da mein Programm sehr lange läuft, und ich möchte nicht, dass meine CPU sehr heiß wird. Kann ich das trotzdem verhindern?
Antworten:
Am Ende Ihrer Schleife haben Sie eine
time.sleep(xx)
für Sekunden odertime.sleep(x.x)
für Teilsekunden(Bitte denken Sie daran , die Bibliothek zu importieren, etwa so:
import time
)Wenn xx so hoch wie möglich ist, ohne Ihr Programm zu beeinträchtigen. Im Moment macht Ihr Programm immer alles so schnell wie möglich, anstatt dem Pi etwas Zeit zu geben, um sich auszuruhen oder etwas anderes zu tun.
quelle
import time
?Vorwort
Stellen Sie sicher, dass Sie Ihre Aufgabe wirklich wiederholt ausführen müssen. Dies nennt man beschäftigt warten und fast immer suboptimal. Wenn Ihre Aufgabe auf die Ausgabe eines Unterprozesses prüft, können Sie ihn beispielsweise einfach abschließen lassen
subprocess.wait()
. Wenn Sie darauf warten müssen, dass eine Datei oder ein Verzeichnis im Dateisystem berührt wird, können Sie pyinotify verwenden , um Ihren Code vom Dateisystemereignis auszulösen , das vom Kernel behandelt wird.Antworten
Auf diese Weise schreiben Sie eine Endlosschleife, um zu warten, ohne zu viel CPU zu verbrauchen.
Python 2:
Python 3:
Auswertung
Wie @gnibbler in einer anderen Antwort getestet hat , sollte der vorgestellte Code auf neueren Computern nicht mehr als 1% CPU verbrauchen. Wenn es mit Ihrem Nutzlastcode immer noch zu viel CPU verbraucht, sollten Sie die Ruhezeit noch weiter erhöhen. Andererseits muss der Payload-Code möglicherweise für die wiederholte Ausführung optimiert werden. Das Caching kann beispielsweise die Ausführung bei unveränderten Daten beschleunigen.
Credits
Diese Antwort baut auf der Antwort von @ user2301728 auf .
quelle
Ich hatte das gleiche Problem, siehe meine Frage zu Stack Exchange . Die Lösung war eine Kombination von
time.sleep(0.01)
undnice
.nice
Senkt die für eine Anwendung verfügbare CPU. Dies ist , wie ich die app starten:nice -n 19
.quelle
Sie könnten es auch versuchen
nice -n 19 python myscript.py
.nice ist ein * nix-Dienstprogramm zum Festlegen der CPU-Priorität einer Task. 19 ist das größte Gewicht und folglich die langsamste Einstellung.
quelle