CとPythonの2つのプロセスがあります。C プロセスは、Python プロセスが読み取る名前付きパイプにデータを渡すのに時間を費やします。非常にシンプルで、1 秒に 1 回データ (現在は「2013 年 8 月 19 日月曜日 18:30:59」などのタイムスタンプ) を渡すと正常に動作します。
sleep(1) を削除すると問題が発生します。C プロセスのコマンド。1 秒の遅延もない場合、通信はすぐに台無しになります。Python プロセスは、バッファーが空であっても、複数のメッセージを読み取るか、データを読み取ったことを報告します。この時点で、C プロセスは通常爆撃します。
サンプル コードを投稿する前に、両側で何らかの同期を実装する必要があるかどうか疑問に思っています。fifo が空でない場合、C プロセスに fifo に書き込まないように指示するようなものでしょうか。
C プロセスは名前付きパイプを書き込み専用で開き、Python プロセスは読み取り専用で開きます。
両方のプロセスは、ループとして実行されることを意図しています。C プロセスは、USB ポート経由で受信したデータを継続的に読み取り、Python プロセスは各「メッセージ」を受け取り、それを解析してから SQL Db に送信します。
毎秒最大 50 件のメッセージを表示する場合、名前付きパイプはそのレベルのトランザクション レートを処理できますか? 各トランザクションのサイズは比較的小さい (20 バイト程度) ですが、その頻度から、共有メモリなどの他の形式のプロセス間通信を検討する必要があるのではないかと思います。
アドバイスをいただければ幸いです。必要に応じてコードを投稿できますが、現時点では、2 つのプロセス間で何らかの方法で同期する必要があるかどうか疑問に思っています。
ありがとう!