pxd ファイル

Cyhton は、 .pyx ソースファイルの他にも .pxd という拡張子のファ イルを扱います。このファイルは C のヘッダファイルのように使われます。 .pxd ファイルには Cython の宣言 (時にはコードの一部) が入っていて、 Cython モジュールから取り込んではじめて意味をなします。 pyx モジュールは、 cimport キーワードを使って pxd を import します。

pxd ファイルには、いくつかの用途があります:

  1. 外部公開の C の宣言 (external C delcaration) を共有するのに使いま す。

  2. C コンパイラにインライン化させたい関数を定義します。そのような関数 は、下の例のように inline でマークします:

    cdef inline int int_min(int a, int b):
        return b if b < a else a
    
  3. 同名の pyx ファイルが同時に存在するとき、 Cython モジュールに Cython 用のインタフェースを作るのに使われます。それによって、 Cython モジュール間のコミュニケーションを、Python を経由するより効 率的に行えます。

チュートリアルの積分の例では、 pxd を以下のように分割できました:

  1. C の math.h ヘッダで定義されている sin のような関数を定義 した cmath.pxd を追加します。そして、 integrate.pyxfrom cmath cimport sin として import します。

  2. 他のモジュールで独自の関数を Cython で書いて積分処理できるように、 integrate.pxd を追加する。

    cdef class Function:
        cpdef evaluate(self, double x)
    cpdef integrate(Function f, double a,
                    double b, int N)
    

    cdef クラスにアトリビュートを持たせる場合、 pyx ファイルではな く pxd ファイルのクラス宣言中でアトリビュートを宣言せねばなり ません。宣言を間違えると、コンパイラがそのことを教えてくれます。

Previous topic

拡張型の定義 (cdef クラスの定義)

Next topic

注意事項

This Page