私はbytes
オブジェクトを指しているpython memoryview
を持っています。このオブジェクトでは、私はcythonで何らかの処理をしたいと思っています。バイトオブジェクトのPython memoryviewへのポインタの取得
私の問題は、次のとおりです。
bytes
オブジェクトが書き込み可能ではないので、cythonは- それから型付き(cython)memoryviewを構築することはできません私はへのポインタを取得することはできませんので、私はどちらかのポインタを使用することはできませんで
:memoryviewは
例を開始しますパイソン:cythonで
array = memoryview(b'abcdef')[3:]
:
cdef char * my_ptr = &array[0]
はメッセージでコンパイルに失敗します。Cannot take address of Python variable
cdef char[:] my_view = array
は、メッセージを表示して、実行時に失敗します。BufferError: memoryview: underlying buffer is not writable
どのようにこれを解決しません?
最初の質問:あなたはどのようにあなたの中で 'array'引数を宣言しますか? –
@PierredeBuyl私はそれをPythonオブジェクトとして渡します。同様に、Cython: 'def myfunc(arr):pass' – ARF
こんにちは、いくつかのドキュメントを見て、グーグルで、あなたが受け取ったものがメモリビューであれば、読み書きアクセスを得るのは難しいようです。最初の場所でmemoryviewがどのように作成されたかを述べる必要があります。代わりに 'Py_buffer'構造体を得ることができれば、これは役に立ちます。 https://docs.python.org/3.5/c-api/buffer.html –