私は現在、作業中の C++ ライブラリの Python バインディングを作成しています。ライブラリはいくつかのバイナリ ファイル形式を読み取りますが、読み取り速度は非常に重要です。ライブラリの速度を最適化しているときに、std::vector (私が読んでいるインスタンスで使用) が多くの処理時間を消費していることに気付きました。良い/賢明なことはおそらく別の質問です)。
今、これらの配列へのPythonアクセスを許可する方法の問題に悩まされています。boost::python に組み込まれているソリューションはないようです (少なくとも 1 つを見つけることができませんでした)。
状況を説明するコード例:
// Instance.cpp
class Instance
{
int * data;
int dataLength;
Instance ()
{
data = new int[10];
dataLength = 10;
}
};
// Class pythonBindings.cpp
BOOST_PYTHON_MODULE(db)
{
class_<Instance>("Instance", init<>())
.add_property("data", ........)
;
}
Pythonがアクセスしたいときはいつでも、配列からboost::python::listを構築するラッパー関数を使用できると思います。私はboost::pythonにまったく慣れていないので、ハッキングを始める前に、この問題に対する優れた標準または組み込みの解決策があるかどうかを尋ねる必要があると考えました。
では、 boost::python を使用してInstance
の配列をどのようにラップすることをお勧めしますか?data