3

1 つのテキスト入力を受け取り、1 つの画像ファイルを生成できる既存の C プロセスがあります。この C プロセスは、外部システムとのインターフェースであるため、セットアップ/ティアダウン コストが高くなります。セットアップ/ティアダウンが発生すると、テキストからのイメージの実際の生成はほぼ瞬時に行われます。

私の計画は、C プロセスをデーモン化して、外部システムへの接続を維持しながら、無限ループでテキストを受け取り、画像ファイルを生成することです。

また、Python で小さなクライアント プログラムを作成します。このプログラムは、デーモンとやり取りしてテキストを送信したり、画像を受信したりします。

対象OSはunixです。

問題は、この場合、python/C 間で双方向 IPC を実行する最良の方法は何ですか? Unix ドメイン ソケットを開いて、パックされた構造体を送受信するだけでよいのでしょうか、それとも Apache Thrift や protobuf などを調べる必要がありますか?

アップデート:

シンプルに保ち、UNIX ドメイン ソケットを開きます。

4

2 に答える 2

5

ソケットはここに行く方法だと思います。Unix では、AF_UNIXソケットをお勧めします (unix(7)マンページを参照)。socketsこれらは、C++ と python (モジュール)の両方で簡単に作成できます。これにより、ポートの競合や、ローカル システムでポートを開く権利に関する問題が回避されます。

AF_INET6Unix ソケットのパフォーマンスはかなり良好で、リモート ワーカーと作業する場合は、ソケットと簡単に交換できます。

データのパック/アンパックについては、コンパイルされたオブジェクトstructを使用するモジュールが妥当と思われます。それが私が過去に行った方法であり、パフォーマンスは非常に良好でした(調査するにはあまりにも良すぎたため、測定は行われませんでした)。Struct

于 2012-06-29T14:02:41.477 に答える
1

私のデフォルトの選択は、localhost 経由で通信する通常のソケットを使用することです。ソケットはよく理解された言語であり、プラットフォームに中立な API であり、非常にうまく機能する傾向があります。また、同じボックスで 2 つのプロセスに縛られないという利点もあり、多くの状況で有利になる可能性があります。

于 2012-06-29T13:58:38.760 に答える