2017-03-01 9 views
0

私は比較的C + +で経験はありませんが、データをシャッフルするためのフレームワークを構築する必要があります。必ずしも関連するが、私のデータの一般的な流れ経路は次のように行く必要があります:1つの.exeから別のものにデータを渡す

  1. データは、PythonのオブジェクトがコンパイルされたC++拡張
  2. C++拡張機能に渡されたPythonスクリプト
  3. で生成されますコンパイルされたC++/CUDAコード(.exe)にデータを渡します(おそらくポインタ?)
  4. C++/CUDA .exeはstuffを実行します
  5. データはPythonスクリプトで処理され、さらにPython関数

ステップ3.問題が発生している場所です。 C++ Python拡張で見られるデータにアクセスできるように、CUDAコードを含む.exeを呼び出す方法はどうですか?私は何とかポインタを渡すことができるはずですが、私はどのように説明するリソースを見つけるのに問題があります。私は共有メモリの作成についての参照を見たことがありますが、そこにある詳細も不明です。

+0

IPC(プロセス間通信)メカニズムについていくつかの調査を行う必要があります。 –

+0

PythonのC++バインディングを見てきましたか?あなたはPython内からC++クラス/メソッド/関数を呼び出すことができます –

+1

アドレスは所有プロセスに対してのみ有効なので、ポインタを渡すことはできません。 – Ceros

答えて

3

多くの 2つの実行可能ファイルがデータを交換できる方法があります。

いくつかの例は:

  • 書き込み/(そう、彼らはお互いにつまずくしていないロックを忘れないでください)共有ファイルへ/からデータを読み込みます。

  • データ交換のプロセス間でTCPソケットまたはUDPソケットを使用します。

  • 共有メモリを使用します。

  • アプリケーションが1つ起動すると、コマンドライン引数または環境でデータを渡すことができます。

  • プロセス間のパイプを使用します。

  • プロセス間のUnixドメインソケットを使用します。

さらにオプションがありますが、おそらく最も一般的なものです。

調査する必要があるのはIPC(プロセス間通信)です。

+0

WebSocketまたはRESTful with CppRest(Casablanca) – Ceros

+0

@Cerosこれは、ちょうど余分なプロトコルレイヤーを上に置いただけのソケットです。 –

関連する問題