データを生成するC++コードがあります。データをPythonに公開したい。しかしそれは聞こえるほど些細なことではありません。C++コードをPythonにラップする
このC++はバイナリにコンパイルしますcppcode
。そのためのフレームワークのセットアップの複雑な方法で、私はそれが私は、Pythonからアクセスするデータを生成cppcodeインサイド
./cppcode {command line arguments}
などのコードを実行することができます。私は何とか
CppClass cpp;
cpp.run(args);
などのプログラムの書き換えを行うことができればそれから私は、ブーストのPythonでCppClassを包むインスタンスを構築し、引数を指定して実行し、生成内のデータにアクセスすることができます知っています。
しかし、今、私は唯一の./cppcode {command line arguments}
ように、コードを実行することができます./cppcodeが終了した後に、そのメモリは、システムによって再収集されますので、私はただ、Pythonのから./cppcode
を呼び出すことはできません、と私はできませんもうPythonから見てください。それを回避する方法はありますか?
私は考えることができます:(1)let ./cppcodeはデータをディスクにダンプし、pythonに読み込ませます。 (2)データをstdoutにダンプし、パイプをpythonスクリプトにダンプします。しかしどちらの方法でも、私はPythonで文字列解析を行う必要があり、遅くなる可能性があります。それを回避する方法はありますか?
私はあなたがあなたのデータをフォーマットする方法を制御することができますよう、 '(2)'まず、これは、非常に些細であるべきで行くと思います。カンマで区切った値のような単純な形式で出力するだけです。これは 'string.split()'を使って驚くほど高速に解析できます。それが遅すぎると判明すれば、私はBoost Pythonのようなものを使うことを考えています。これは実装するより多くの作業です。 –
代わりにコミュニティに貢献してくれてありがとう。 –
@NiklasB:カンマで区切られた値は、カンマを含む文字列を含む可能性があるため、カンマ区切りの値はそれより少し複雑です。 Pythonは 'csv'モジュールを持っていますが、これはこれをうまく処理します。 –