問題タブ [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++ コードでメモリ破損が発生しました。なんとか解決できましたが、解決するために最低限必要なものは何ですか?
仮定する:
CFooset_ptr一部のメンバーが double へのポインターを取るC++ クラスです。Cython クラスFooは へのポインタを保持しますCFoo。barのいくつかのメソッド内でFoo:- 一時的な
numpy.array、aは、 を呼び出すことによって作成されfunction_returning_a_numpy_array()ます。 - 表示用に型指定されたメモリ
a_viewビューが作成されaます。 - からのポインターがusingのメンバー
a_viewに送信されます。CFooCFooset_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が初めてなので、パフォーマンスを改善するためのヒントをいただければ幸いです..ありがとう!