Я создал сценарий для мониторинга вывода последовательного порта, который получает 3-4 строки данных каждые полчаса - скрипт работает отлично и захватывает все, что выходит из порта, который на конец дня - это то, что имеет значение ...Python/PySerial и использование ЦП
Что-то меня беспокоит, что использование процессора кажется довольно высоким для программы, которая контролирует только один последовательный порт, 1 ядро всегда будет на 100% использовании, в то время как это скрипт запущен.
Я в основном работает модифицированную версию кода в этом вопросе: pyserial - How to Read Last Line Sent from Serial Device
Я попытался функция inWaiting() через регулярные промежутки времени опроса и с его спать, когда inWaiting() 0 - I» вы пробовали интервалы от 1 секунды до 0,001 секунды (в основном, так часто, как я могу, без повышения производительности процессора) - это будет успешным в захвате первой линии, но, похоже, пропустят остальные данные.
Настройка таймаута последовательного порта, похоже, не влияет на использование процессора, а также не помещает функцию прослушивания в собственный поток (не то, что я действительно ожидал разницы, но это стоило попробовать).
- Должно ли python/pyserial использовать это много процессора? (это похоже на излишний)
- Я трачу свое время на этот квест/Должен ли я просто укусить пулю и запланировать сценарий, чтобы спать в течение периодов, которые, как я знаю, не будут поступать?
Удивительный! Теперь он мурлычет, как котенок, рядом с потреблением процессора, и он захватывает все, что я бросаю в него. Я использовал read (inWaiting()) под впечатлением, что он будет работать так же, как и читать (1) - очевидно, это не так. Спасибо, что освободил меня. –
Прохладный, и спасибо за то, что заставил меня открыть pyserial, я буду рассматривать его в следующий раз, когда я играю с последовательными портами :) – tonfa
Отлично - безболезненно настроить и использовать, это было единственное, с чем я столкнулся, и ** I ** была проблема. –