Pybind11を用いたC拡張の開発
10/14, 13:50–14:20 (Asia/Tokyo), pyconjp_1
言語: 日本語

Pybind11を用いたPythonのC拡張の開発について、基本的な使い方から、 C 言語レベルおよびPythonレベルでのテストやDevOpsパイプラインの構築を含む、関連する課題と実践している解法を紹介する。


特に効率が求められる場合や、歴史的な資産があったり、プロジェクトメンバのスキルなどの理由で、PythonのC拡張を行う場合がある。Pybind11はC拡張の開発を助けるライブラリであり、通常のC/C++拡張に比べ、簡単に開発を行うことができる。特に実践ではnumpyとの連携が必須となるが、Pybind11はnumpyとの連携を容易にする機能も提供している。また、C/C++言語部分でもEigenなどのライブラリを活用する要求がしばしばあるが、Pybind11を利用することでそれらのライブラリとの連携も容易に実現することができる。また、C/C++拡張を開発する場合には、 メモリの慎重な管理が必要であるため、開発においては、Python言語レベルでのテストだけではなく、メモリのプロファイリング、リークチェックを含むC/C++言語レベルでのテストが必要である。Valgrindを用いたメモリリークのチェックを含むテスト自動化の実践を紹介する。

Python歴 約10年
NEC航空宇宙システム
資生堂