問題タブ [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 - PyObject_to_MemoryviewSlice、GOTREF / DECREF Python API 呼び出しを回避するには?
コード、より具体的には次の(および同様の)スニペットのサイトン化に問題があります。
grad_d_im_d_jm(...) は double [:,:] メモリビューを返します。このコードは、Cython によって次の C コードに変換されます。
これをループで行っているため、Python API 呼び出しがコードの速度にかなりの影響を与えていると思われます。
GOTREF / DECREF 呼び出しは、PyFloat_asFloat とともに、他の機会にも発生します。
scalar_product() は cdef float を返します。このスニペットは翻訳されます
Python 2.7.11+ と Cython 0.23.4 を実行しています。a) これはパフォーマンスには関係ないか、b) 修正方法のいずれかを教えていただければ幸いです。質問を改善できるかどうか教えてください。喜んでそうします。
numpy - cython memoryview で numpy.asarray が失敗する
説明できない memoryview オブジェクトで numpy.asarray を使用すると、奇妙な動作に遭遇しました。これは、jupyter ノートブックで cython マジックを使用した簡単な例です。単純に、2 つの構造体配列バッファーを想定してそれらを返す関数を作成します。一方には 2 つの int があり、もう一方には long と int があります。
次に、Python で 2 つの配列を作成して、この関数に渡します。
どちらも MemoryView オブジェクトとして正常に返されます。今、私はそれらをnumpy配列に変えたい:
ここで何が欠けていますか?この 2 番目の構造体が機能しないのはなぜですか? どんなヒントでも大歓迎です!
python-3.x - Python 3: メモリビューから単一ビットを返す
Python 3.5 を使用して、PostgreSQL からメモリビューとして 1 バイトを受け取ります。
このバイトの単一のビットを読み取るにはどうすればよいですか? この 1 バイトのビット単位の表現を取得する方法はありますか? みたいなことを思った
トリックを行う必要がありますが、メモリビューでは機能しません。また、次のようなもの
明らかに機能していません...ヒントとサポートに感謝します。
python - Cython による Python Scipy 操作の最適化
こんにちは、相関 (r) 値の 3D マトリックスの p 値を計算し、完全な p マトリックスの FDR しきい値を計算したいと思います (FDR は上三角 p 値のみに基づいて計算されます)。3D マトリックスは大規模です (208、3544、3544)。現時点では、これらの cython 関数を使用してこれを行います。ただし、高速化し、可能であれば RAM の使用量を減らしたいと考えています。手伝ってくれますか?
python - memoryview によるバイナリ ファイルの読み取り
以下のコードで、特別な構造を持つ大きなファイルを読み取りました。特に、同時に処理する必要がある 2 つのブロックがあります。ファイルを前後にシークする代わりに、memoryview
呼び出しでラップされたこれらの 2 つのブロックをロードします。
ファイルは正しく解析されていますが、mamoryview インターフェイスを初めて使用するため、正しく解析されているかどうかわかりません。file_names_block は、null で終了する C 文字列で見られるように構成されます。
- 私のトリック
file_names_block[names_record_index:]
は memoryview マジックを使用していますか、それとも n^2 スライスをいくつか作成しますか? ここで使用する必要がありislice
ますか? - ご覧のとおり、ヌル バイトを手動で探してから に進みます
unpack_from
。しかし、メモリビューで使用できるPythonでバイト文字列を個別のバイトに分割する方法cast()
(ドキュメント?)を読みました-それ(または別のトリック)を使用してビューをバイト単位で分割する方法はありますか? 電話してもsplit('\x00')
いいですか?これはメモリ効率を維持しますか?
これを行う正しい方法についての洞察をいただければ幸いです(python 2)。
cython - Cython - 任意の長さの Typed MemoryView を返す
数値のリスト/型付きメモリビューを引数として取り、同じ長さの型付きメモリビューを返す Cython 関数を作成しました。
数千回のテストを実行した後、Segmentation fault (core dumped)
エラーが発生し始めました。これはメモリ管理の問題であることは認識していますが、関数によって返される型指定されたメモリビューのメモリを管理する方法の例が見つかりません。私が見つけた唯一の役立つ情報は、メモリ割り当てに関するresult_arr
もので、のライフタイムをPython オブジェクトに結び付け、__dealloc__
メソッドを使用してメモリを解放することを推奨しています。
メモリの割り当てを解除するための python クラスの作成を伴わないメモリビュー ガベージ コレクションを管理する方法はありますか?
編集:これを試してみましたが、正しい方法でメモリを解放しているようです。
なぜこれが機能し、メモリを管理するためのより良い方法がありますか?