問題タブ [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.

0 投票する
1 に答える
412 参照

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) 修正方法のいずれかを教えていただければ幸いです。質問を改善できるかどうか教えてください。喜んでそうします。

0 投票する
0 に答える
298 参照

numpy - cython memoryview で numpy.asarray が失敗する

説明できない memoryview オブジェクトで numpy.asarray を使用すると、奇妙な動作に遭遇しました。これは、jupyter ノートブックで cython マジックを使用した簡単な例です。単純に、2 つの構造体配列バッファーを想定してそれらを返す関数を作成します。一方には 2 つの int があり、もう一方には long と int があります。

次に、Python で 2 つの配列を作成して、この関数に渡します。

どちらも MemoryView オブジェクトとして正常に返されます。今、私はそれらをnumpy配列に変えたい:

ここで何が欠けていますか?この 2 番目の構造体が機能しないのはなぜですか? どんなヒントでも大歓迎です!

0 投票する
1 に答える
160 参照

python-3.x - Python 3: メモリビューから単一ビットを返す

Python 3.5 を使用して、PostgreSQL からメモリビューとして 1 バイトを受け取ります。

このバイトの単一のビットを読み取るにはどうすればよいですか? この 1 バイトのビット単位の表現を取得する方法はありますか? みたいなことを思った

トリックを行う必要がありますが、メモリビューでは機能しません。また、次のようなもの

明らかに機能していません...ヒントとサポートに感謝します。

0 投票する
0 に答える
52 参照

python - Cython による Python Scipy 操作の最適化

こんにちは、相関 (r) 値の 3D マトリックスの p 値を計算し、完全な p マトリックスの FDR しきい値を計算したいと思います (FDR は上三角 p 値のみに基づいて計算されます)。3D マトリックスは大規模です (208、3544、3544)。現時点では、これらの cython 関数を使用してこれを行います。ただし、高速化し、可能であれば RAM の使用量を減らしたいと考えています。手伝ってくれますか?

0 投票する
1 に答える
2623 参照

python - memoryview によるバイナリ ファイルの読み取り

以下のコードで、特別な構造を持つ大きなファイルを読み取りました。特に、同時に処理する必要がある 2 つのブロックがあります。ファイルを前後にシークする代わりに、memoryview呼び出しでラップされたこれらの 2 つのブロックをロードします。

ファイルは正しく解析されていますが、mamoryview インターフェイスを初めて使用するため、正しく解析されているかどうかわかりません。file_names_block は、null で終了する C 文字列で見られるように構成されます。

  1. 私のトリックfile_names_block[names_record_index:]は memoryview マジックを使用していますか、それとも n^2 スライスをいくつか作成しますか? ここで使用する必要がありisliceますか?
  2. ご覧のとおり、ヌル バイトを手動で探してから に進みますunpack_from。しかし、メモリビューで使用できるPythonでバイト文字列を個別のバイトに分割する方法cast()(ドキュメント?)を読みました-それ(または別のトリック)を使用してビューをバイト単位で分割する方法はありますか? 電話してもsplit('\x00')いいですか?これはメモリ効率を維持しますか?

これを行う正しい方法についての洞察をいただければ幸いです(python 2)。

0 投票する
1 に答える
810 参照

cython - Cython - 任意の長さの Typed MemoryView を返す

数値のリスト/型付きメモリビューを引数として取り、同じ長さの型付きメモリビューを返す Cython 関数を作成しました。

数千回のテストを実行した後、Segmentation fault (core dumped)エラーが発生し始めました。これはメモリ管理の問題であることは認識していますが、関数によって返される型指定されたメモリビューのメモリを管理する方法の例が見つかりません。私が見つけた唯一の役立つ情報は、メモリ割り当てに関するresult_arrもので、のライフタイムをPython オブジェクトに結び付け、__dealloc__メソッドを使用してメモリを解放することを推奨しています。

メモリの割り当てを解除するための python クラスの作成を伴わないメモリビュー ガベージ コレクションを管理する方法はありますか?

編集:これを試してみましたが、正しい方法でメモリを解放しているようです。

なぜこれが機能し、メモリを管理するためのより良い方法がありますか?