30 分ごとに 3 ~ 4 行のデータを受信するシリアル ポートの出力を監視するスクリプトを作成しました。 .
ただし、1 つのシリアル ポートを監視しているだけのプログラムでは、CPU 使用率がかなり高いように見えます。このスクリプトの実行中は、1 つのコアが常に 100% 使用されます。
基本的に、この質問のコードの修正版を実行しています: pyserial - シリアル デバイスから送信された最後の行を読み取る方法
inWaiting() 関数を定期的にポーリングし、inWaiting() が 0 のときにスリープ状態にしようとしました - 1 秒から 0.001 秒までの間隔を試しました (基本的に、CPU 使用率を上げずにできるだけ頻繁に) ) - これは最初の行を取得することに成功しますが、残りのデータを見逃しているようです。
シリアル ポートのタイムアウトを調整しても、CPU の使用率には影響がないようです。また、リッスン機能を独自のスレッドに配置しても影響はないようです (実際に違いを期待したわけではありませんが、試してみる価値はありました)。
- python/pyserial はこれほど多くの CPU を使用する必要がありますか? (これはやり過ぎのようです)
- このクエストで時間を無駄にしているのでしょうか / データが来ないことがわかっている期間、スクリプトをスリープ状態にするようにスケジュールを設定する必要がありますか?