問題タブ [memoryview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Cython: バッファーの型が一致しません。「int」が必要ですが、「long」になりました
この整数のメモリビューをこの(かなり些細な)関数に渡すのに問題があります。Pythonは私にこのエラーを与えています:
誰かが何が起こっているのか理解するのを手伝ってくれますか? stackoverflow を検索すると、python が型を解釈する方法と、C が型を解釈する方法に関係しているようです。
これにより、ValueError
上から が生成されます。
編集:ここに私が発見した他のいくつかのものがあります。
明確にするためにy
、次の方法を宣言すると、このエラーが持続します。
ただし、次のように宣言すると機能y
します
なぜこれが当てはまるのか、誰かが提案したいですか?np.int32
さまざまなコンピューターで動作しますか? (私は 2013 年の macbook pro Retina を使用しています。)
numpy - 型指定されたメモリビューは numpy.array の参照カウントを増やしますか?
以下に示すタイプのコードによって、Cython を介して呼び出された C++ コードでメモリ破損が発生しました。なんとか解決できましたが、解決するために最低限必要なものは何ですか?
仮定する:
CFoo
set_ptr
一部のメンバーが double へのポインターを取るC++ クラスです。Cython クラスFoo
は へのポインタを保持しますCFoo
。bar
のいくつかのメソッド内でFoo
:- 一時的な
numpy.array
、a
は、 を呼び出すことによって作成されfunction_returning_a_numpy_array()
ます。 - 表示用に型指定されたメモリ
a_view
ビューが作成されa
ます。 - からのポインターがusingのメンバー
a_view
に送信されます。CFoo
CFoo
set_ptr
- 一時的な
スニペット:
この質問のコンテキストでは、後続の呼び出しにより、このポインターが操作さFoo
れることに注意してください。CFoo
は何も保持されていないため、 のメンバーa
への後続の呼び出しFoo
で reclaimed のメモリを見つけることができることは明らかですa
。a
のメンバーにすることでこれを解決しましたFoo
。私の質問は次のとおりです。
double *
これは(に設定&a_view[0]
) を のメンバーにすることで解決されFoo
ますか? いいえと思います。double a_view[:]
これは(に設定a
) を のメンバーにすることで解決されFoo
ますか? これに何らかの方法で対処しているドキュメントには何も見つかりません。
python-3.x - memoryView を使用して大きなバッファーを操作する
私のアプリケーションには C ライブラリが必要です。ある時点で、ライブラリはバイナリ構造で満たされた大きなバッファへのポインタを提供します。大きなバッファとの間でコピーしたくありません。bytearray クラスの memoryView を介してバッファを操作したいと思います。
Python3.4 で ctypes.PyMemoryView_FromMemory に C ポインタを入れようとしたのですが、Int オブジェクトを返すようです。
バッファのアドレスを bytearray の memoryView に設定する最良の方法は何ですか?
可能であれば、Cython を使用しないことを好みます。
ありがとう!
python - Cython memoryviews エラー: 指定されたメモリビューの無効なインデックス
メモリビューを使用して cython に標準のクイックソートを実装しようとしています。これが私のコードです:
ただし、標準setup.py
ファイルとpython setup.py build_ext --inplace
コマンドを使用したコンパイル中に、メモリビュー アクセスに関する複数のエラーが発生します。
誰かが私が間違っていることを教えてもらえますか? また、私はCythonが初めてなので、パフォーマンスを改善するためのヒントをいただければ幸いです..ありがとう!