Während Ihr PC läuft, muss Ihre CPU eine Menge Prozesse ausführen (damit Ihr PC läuft). Da CPUs extrem schnell sind, können sie fälschen, um mehrere Aufgaben gleichzeitig auszuführen, aber sie tun es nicht wirklich (heutzutage bekommen wir mehrere Kerne CPU und Multi-Threading, aber vergiss es für diese Erklärung).
Sie führen nur einen Teil eines Prozesses während einer bestimmten Zeit aus, dann einen Teil eines anderen Prozesses, gehen dann zurück zum ersten und so weiter.
Auf einfache Weise kann die CPU auf einen Prozess zu einem anderen wechseln, wenn sie nicht von dem Prozess verwendet wird, der gerade ausgeführt wird, z. B. wenn der Prozess einige E/A ausführt oder auf Benutzerinteraktion wartet.
Wenn Sie eine while true
tun, wird es Schleife ASAP es beendet, um die Funktion in der while
Schleife auszuführen. Hier bedeutet ASAP so schnell wie möglich, also würde kein anderer Prozess irgendetwas zwischen zwei Schleifen tun können. Weil die CPU kontinuierlich verarbeitet.
Wenn Sie eine sleep
setzen, erlauben Sie der CPU, andere Prozesse ausführen zu lassen. Es gibt keinen wirklichen Grund dafür, wie lange der Schlaf ist, da eine zufällige CPU Milliarden von Operationen in einer Mikrosekunde ausführen kann.
Also in Ihrer Frage, die sleep(0.1)
ermöglicht Ihrer CPU, einige Operationen zwischen zwei check_messages_stack()
Aufruf auszuführen.
Weitere Informationen finden Sie unter "CPU-Planung".
Die Frage ist ohne Kontext und Besonderheiten nicht wirklich sinnvoll. – pvg
Für weniger CPU-Zyklen. Führen Sie eine while-Schleife aus: while True: pass und 'while True: pass; sleep (.1)', Sie werden einen Unterschied in Ihrer CPU-Nutzung feststellen –