2011-07-26 5 views
2

私はPythonをCythonに翻訳してスピードアップしようとしています。関数scipy.integrate.quadを使用します。これは、引数の1つとしてpython呼び出し可能関数を必要とします。私はこれを使用することができますので、Cythonでcdef文の中から関数を定義して渡す方法はありますか?Cythonのcdef文の中からscipy.integrate.quadを使用しますか?

ありがとうございました。

答えて

3

はい、あなたはPython関数で関数をラップするだけです。

def py_callback(a): 
    return c_callback(a) 

cdef float c_callback(float a): 
    return a * a 

... 
scipy.integrate.quad(py_callback) 

もちろん、変換過負荷のビットがあります。 代わりに、その関数がどのように実装されているかを調べることもできます。

  • C関数へのラッパーを直接(scipyのダウンロードのCモジュールをラップPXD作成)PYXファイル からC関数を呼び出すことを試みる場合。
  • 純粋なPythonがそれをcythonに翻訳しようとしているのであれば。

そうでなければ、他の純粋なCの統合関数を使用して、scipyをスキップする必要があります。

関連する問題