2012-05-04 4 views
0

私はPythonコードとC++コードを混在させることが有益であるという問題があります。私はタスクが単純で十分に簡単であると思いますPythonからC++プログラムを初期化してから、C++プログラムでpythonがstdで入力を待つようにしてから、PythonでC++プログラムの "wait"を計算してstd outなどで返します。PythonとC++をstd inとstd outで組み合わせる

私はこれが些細なものか極端に難しいと感じます。私の主な問題は、C++コードを初期化するたびに非常に時間がかかることですが、このアイデアを実装することができれば、一度だけ行う必要があることです。何かご意見は?

+2

PythonをC++アプリケーションに埋め込まない理由は何ですか? –

+0

WindowsまたはUnixベースの環境を使用していますか? –

+0

基本的に、あなたが記述しているユースケースは、標準入力で1つ以上の "要求"を受け取り、標準出力で "応答"を出力するサービスとして機能するC++プログラムです。 Pythonスクリプトはこのプロセスを開始し、Pythonメソッドを要求に変換し、匿名パイプを介してC++プログラムに送信し、応答を待ちます。これは正しいです? –

答えて

0

サブモジュールライブラリを見てください。 Submodule.popen()を使用して、stdin = PIPEおよびstdout = PIPEを使用して、Pythonからプロセスを作成できます。その後、C++プログラムのstdoutから読み込み、stdinに書き込むことができます。

+1

['subprocess'](http://docs.python.org/library/subprocess.html)ライブラリは、このユースケースを最初に探すとき(同じプロセスとの繰り返しのやり取り)、 'communicate()'を使うことはできません。匿名パイプには通常固定バッファがあるため、デッドロックを取得するのは簡単です。マニュアルをよく読んでください。 –

+0

これは私にとってはうまくいくと思う。私は単にmy_proc.stdin.write()とmy_proc.stdout.readline()の間で交互に実行しています。 –

0

あなたが探しているものがSWIGのようなものかもしれません。それを使ってPython用の拡張モジュールを生成し、PythonスクリプトからC++のメソッドを呼び出します。

関連する問題