状況は次のとおりです。私は大量のオブジェクトをメモリにロードする必要があります。それが2倍で読み込まれると、私のマシン上の利用可能なメモリを越えることになります(いいえ、私はメモリをアップグレードできません)。私はそれをより小さなものに分割することもできません。簡単にするために、オブジェクトが600 MBで、RAMが1 GBしかないとしましょう。私は、複数のプロセスで実行されているWebアプリケーションからこのオブジェクトを使用する必要があります。また、これらのオブジェクトがどのように生成されるのかを制御しません(サードパーティのロードバランサはそれを行います)。いくつかのマスタースレッド/プロセスで実行し、その後子プロセスを起動します。これはPOSHのようなものを使用する可能性を排除します。なぜなら、POSHは独自のカスタムフォークコールに依存しているからです。私はSQLiteメモリデータベース、mmap、posix_ipc、sysv_ipc、shmモジュールのようなものを使うこともできません。なぜならそれらはメモリ内のファイルとして動作し、このデータは私にとってオブジェクトでなければならないからです。そのうちの1つを使用して、ファイルとして読み込んでから、個々のプロセスとBAMのオブジェクトに変換しなければなりません。セカンダリコピーで読み込もうとしたため、セグメンテーションフォールトがマシンのメモリ制限を超えてしまいます。異なるプロセスで使用するためにPythonオブジェクトをメモリに保存するにはどうすればよいですか?
Pythonオブジェクトを(ファイル/文字列/シリアライズ/ピクルスとしてではなく)メモリに格納し、どのプロセスからでもアクセスできるようにする必要があります。私はそれが何であるか分かりません。私はStackOverflowとGoogleの全体を見てきましたが、これに対する答えを見つけることができないので、誰かが私を助けてくれることを願っています。
「メモリ内のファイルとして機能するため」とはどういう意味ですか。共有メモリはメモリであり、ファイルではありません。そのメモリを使用して、オブジェクトを含む何かを格納することができます。これはPythonではそれほど明白ではないかもしれませんが、Cではそうです。これはPython専用のソリューションでなければならないのですか、または共有メモリ内のオブジェクトへのC/C++バインディングを介して間接的にオブジェクトにアクセスするハイブリッドPython/CまたはPython/C++ソリューションを検討しますか? –
これらはメモリ内のファイルとして機能するため、たとえばhttp://docs.python.org/library/mmap.htmlを参照してください。 –
Memcached for Pythonのようなものはまったく役に立ちますか? – doremi