30分ごとに3〜4行のデータを受け取るシリアルポートの出力を監視するためのスクリプトを作成しました。このスクリプトはうまく動作し、その日の終わりは重要です...Python/PySerialとCPUの使用
しかし、私はCPUの使用量は、単一のシリアルポートを監視しているプログラムではかなり高いようですが、1コアは常に100%の使用率になりますスクリプトが実行中です。
が、私は基本的にこの質問にコードの修正版を実行しています:私は定期的にinWaiting()関数のポーリングを試してみたpyserial - How to Read Last Line Sent from Serial Device
と)(inWaitingとき、それは寝たことは0である - 私は」 1秒から0.001秒までの間隔を試しました(基本的に、CPU使用量を増やすことなくできるだけ頻繁に) - これは最初の行を取得するのには成功しますが、残りのデータは欠落しているようです。
シリアルポートのタイムアウトを調整しても、CPU使用率に影響はなく、リスニング機能も独自のスレッドに入れているわけではありません。
- python/pyserialはこの多くのCPUを使用する必要がありますか? (これは過度のようです)
- 私はこのクエストで時間を無駄にしていますか?私は弾丸を噛んで、スクリプトがデータが到着しないことがわかっている時間に寝るようスケジュールする必要がありますか?
恐ろしい!それは今、ネコのCPU使用量の隣に子猫のようなものがあり、私がそれを投げ捨てるものはすべて掴みます。 私はread(1)と同じように機能するという印象のもとでread(inWaiting())を使用していましたが、明らかにそうではありません。私のためにそれをクリアしてくれてありがとう。 –
クールで、私はpyserialを発見してくれてありがとう、私はシリアルポートで遊ぶ次回に検討するでしょう:) – tonfa
これは素晴らしいです - セットアップと使用に苦労します、これは私が問題を抱えていた** I **問題だった。 –