2012-03-06 20 views
1

データを生成する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で文字列解析を行う必要があり、遅くなる可能性があります。それを回避する方法はありますか?

+0

私はあなたがあなたのデータをフォーマットする方法を制御することができますよう、 '(2)'まず、これは、非常に些細であるべきで行くと思います。カンマで区切った値のような単純な形式で出力するだけです。これは 'string.split()'を使って驚くほど高速に解析できます。それが遅すぎると判明すれば、私はBoost Pythonのようなものを使うことを考えています。これは実装するより多くの作業です。 –

+0

代わりにコミュニティに貢献してくれてありがとう。 –

+0

@NiklasB:カンマで区切られた値は、カンマを含む文字列を含む可能性があるため、カンマ区切りの値はそれより少し複雑です。 Pythonは 'csv'モジュールを持っていますが、これはこれをうまく処理します。 –

答えて

関連する問題