を使用して、起動時に多数の大きなデータ ファイルを unpickle する Python ベースの Web サーバーがありますcPickle
。データ ファイル ( を使用してピクルHIGHEST_PROTOCOL
) は、ディスク上で約 0.4 GB であり、約 1.2 GB の Python オブジェクトとしてメモリに読み込まれます。これには約20 秒かかります。64 ビット Windows マシンで Python 2.6 を使用しています。
ボトルネックは確かにディスクではなく (実際に大量のデータを読み取るのに 0.5 秒もかかりません)、メモリの割り当てとオブジェクトの作成 (何百万ものオブジェクトが作成されています) です。起動時間を短縮するために 20 秒を短縮したいと考えています。
1GB を超えるオブジェクトを Python にデシリアライズする方法はありますかcPickle
(5 ~ 10 倍など)。実行時間はメモリの割り当てとオブジェクトの作成によって制限されるため、JSON などの別の unpickle 手法を使用しても、ここでは役に立たないと思います。
一部のインタープリター言語には、メモリイメージ全体をディスクファイルとして保存する方法があるため、オブジェクトごとに割り当て/作成することなく、一度にメモリに読み込むことができます。Pythonでこれを行う方法、または同様のことを達成する方法はありますか?