Ich versuche, mit einem Gerät über serielle Verbindung mit Pyserial zu kommunizieren. Da Befehle ständig gesendet werden müssen, müssen sie in einer While-Schleife in Python platziert werden.Effiziente und schnelle Python While-Schleife bei Verwendung von Schlaf()
Ich bin derzeit mit diesem Code und habe einen Blick auf python process takes 100% CPU genommen:
while True:
#do some serial sending here
time.sleep(0.2)
Dieser Code funktioniert. Die Sendegeschwindigkeit ist jedoch langsam. Ich versuchte es schneller zu machen, indem ich das sleep
Intervall verringerte, aber es scheint, die CPU ein bisschen zu viel zu laden.
Kurz gesagt, gibt es eine Möglichkeit, effektiv über eine While-Schleife für immer zu iterieren, während immer noch ein geringer Verbrauch von CPU-Ressourcen beibehalten wird?
basierend auf diesem [post] (http://stackoverflow.com/questions/529034/python-pass-or-leep-for-long-running-processes), time.sleep hat sehr wenig Overhead, möchten Sie vielleicht Überprüfen Sie Ihre serielle Übertragung Teil des Codes – xvatar
Haben Sie versucht, für 0,00001 schlafen? Es mag lächerlich erscheinen, aber diese Verzögerung kann den ganzen Unterschied in der Welt für Ihre CPU ausmachen. Versuch es bitte. – jakebird451
Wie kann ein moderner Computer Schweiß an eine serielle Schnittstelle schreiben? Würde nicht serial.Serial(). Write() während des Schreibens blockieren? Das scheint reichlich Zeit für die CPU, andere Dinge zu tun? – Bittrance