2

shelvePythonのモジュールがメモリマップドIOを使用しているかどうか誰かが知っていますか?

多分その質問は少し誤解を招くです。私shelveはそれがその汚い仕事をするために基礎となるdbmスタイルのモジュールを使用していることを理解しています。基盤となるモジュールが使用する可能性はどのくらいmmapですか?

私はデータストアのプロトタイピングを行っています。時期尚早の最適化は一般的に眉をひそめていることに気づきますが、これは私の設計に伴うトレードオフを理解するのに本当に役立ちます。

4

2 に答える 2

4

Python標準ライブラリの既存のdbm実装はすべて、メモリマッピングではなく、「通常の」I/Oを使用します。メモリマッピングを使用して独自のdbmish実装をコーディングし、それをshelve(直接、またはより生産的にはanydbm)と統合する必要があります。

于 2010-04-11T22:40:32.893 に答える
3

あなたはすでに答えを知っているように見えるので、この質問をして何を学ぼうとしているのかわかりません。それは、使用されている実際のdbmストアによって異なります。それらのいくつかはmmapを使用します-私はdumbdbm以外のすべてがmmapを使用することを期待しています-しかしそれで何ですか?棚のオーバーヘッドは、ほぼ確実にmmap-versus-fileIOの選択ではなく、ピクルス操作にあります。どちらの場合も、dbmモジュールには独自のファンシーロックがある可能性があるため、dbmファイルを自分でmmapすることはできません(bsddbを使用する場合のように、とにかく単一のファイルではない可能性があります)。

自分のデータストアのインスピレーションを探しているだけの場合は、棚を見ないでください。別のデータストアにピクルスアンドパスするだけです。

于 2010-04-11T22:30:52.137 に答える