2

boost.python で可能なように、Cython を使用して to-python および from-python コンバーターを作成することは可能ですか?

編集(コメントリクエストに応じて、これが必要な理由の詳細を添えて):

現在、boost.python を介して Python にバインドされている C++ で記述されたコードがあります。この C++ コードでは、Blitz::Array<>'sを扱います。現在の抽象化スキームでは、Python のコードは NumPy のndarraysを使用し、C++ のコードは を使用しますBlitz::Arrays<>。からへ、またはその逆に、非常に透過的な方法で変換できるブリッジを作成しました。このブリッジは、状況によってはコピーを回避することもできます。これはおまけです。numpy.ndarrayBlitz::Array<>

このアプローチの問題:

  1. 移植性: Python の異なるバージョン用にコンパイルするには、Python の各バージョン用に Boost.Python をコンパイルする必要があります。

  2. 文書化可能性: C++ コードに Python docstring を含めることはあまり良くありません。開発者が見栄えの良いドキュメントを実装することを思いとどまらせました。多くの場合、パッチが適用されていて不完全に見えます。

  3. ビルド速度: boost.python テンプレートのコンパイルは非常に遅くなる可能性があります。CMake を使用してこれを並行して実行して速度を上げますが、その後、プロジェクトでストック Python の卵を作成したいと考えています。おそらくご存知のように、setuptools/distutils と CMake はうまく混ざりません。そのため、このドメインで何かを行うには、ある種の不完全な方法があります。

したがって、Cython の可能性を考えると、Cython を試して、これらすべての問題を解決するハックの少ない方法を見つけようと思いました。依存するコード ベースが既にあり、numpy.ndarrayC++ コード ベースの最小限の記述と最大限の再利用により、可能な限りそれを活用したいと考えています。したがって、私の質問です。

4

0 に答える 0