numpy
関数random/randomkit.h
への直接アクセスを得ようとしていますが、マルチスレッドアプリケーションでcythonを使って(つまりgilを使わずに)ランダムジェネレータを使用します。私は次のコードを使用してnumpyののフォルダからヘッダファイルにアクセスしようとしていますそのためにCython:ダイナミック "xxxからのcdef extern"
:cythonはstr_randomkit_h
文字列を訴えしかし、これはpyximport
では動作しません
import os
import numpy
str_rkdir = os.path.dirname(os.path.abspath(numpy.__file__))
str_randomkit_h = str_rkdir + "/random/randomkit.h"
cdef extern from str_randomkit_h:
ctypedef struct rk_state
cdef unsigned long rk_random(rk_state * state) nogil
cdef signed long rk_gauss(rk_state * state) nogil
cdef void rk_seed(unsigned long seed, rk_state * state) nogil
を(私はそれがdoesnの推測コンパイルする前にPythonコードを解釈しないでください)...これは単純な方法ですか?
汚れた回避策として、私は.pxd
をcythonコンパイルの前に動的に生成していますが、これは本当にうまく感じられないので、より良い方法があるかどうか疑問に思っていました。
このタイプのものは、通常、ビルドスクリプトによって処理されます。あなたは "setup.py"ビルドパスに正しいディレクトリを追加することができますか? –
元気ですね。私は便宜のためにpyximportを使っていますが、絶対パスが必要だと思いますが、もう一度チェックします。 – Silmathoron