Próbuję komunikować się z urządzeniem przez szeregowy przy użyciu Pyserial. Ponieważ polecenia muszą być nieustannie wysyłane, muszą być umieszczone w pętli while w Pythonie.Wydajny i szybki Python Podczas gdy pętla podczas używania trybu uśpienia()
Obecnie używam tego kodu, i podjęły spojrzeć na python process takes 100% CPU:
while True:
#do some serial sending here
time.sleep(0.2)
Ten kod działa. Jednak prędkość wysyłania jest wolna. Próbowałem przyspieszyć działanie, zmniejszając interwał sleep
, ale wydaje się, że obciążenie CPU jest zbyt duże.
Krótko mówiąc, czy istnieje sposób efektywnego iterowania w pętli na zawsze, przy jednoczesnym zachowaniu niskiego zużycia zasobów procesora?
na podstawie [post] (http://stackoverflow.com/questions/529034/python-pass-or-sleep-for-long-running-processes), time.sleep ma bardzo mały narzut, możesz chcieć sprawdzić numer seryjny wysyłania części kodu – xvatar
Czy próbowałeś spać za 0.00001? Może się to wydawać niedorzeczne, ale to opóźnienie może sprawić, że cały procesor będzie różnił się od świata. Proszę, spróbuj tego. – jakebird451
W jaki sposób współczesny komputer może się włamać do portu szeregowego? Czy nie byłoby seryjny.Serial(). Write() podczas pisania? Wydaje się, że CPU ma dużo czasu na robienie innych rzeczy? – Bittrance