2012-04-08 3 views
2

高性能を必要とするデータをシリアル化する必要があります。分割されたスレッドは毎秒アクセスし、データをメモリにロードする必要があります。ユーザーセッション(id、sessid、ログイン日)に関する辞書的なエントリは約1000〜10000件あります。ログインには時間がかかるため、一部のデータは頻繁に更新されます。Python - データを高性能でシリアル化する最良の方法は?

これらのデータは、PythonサーバーとDjangoアプリケーションで共有されます。私はpickleまたはそのより高速なバージョンcPickleを使うと思います。私はまたmarshalを見つけました。

これを行うにはどうすればよいですか? cPickleは十分に効率的ですか?あるいはマーシャル?

EDIT: 非常に重要なことはアクセス時間です。それはリアルタイムのwebsocketサーバーになるので、私は非常に遅れが必要です。 cPickleデータに1秒に1回アクセスするか、Redisのようなデータベースに接続する方が速いのですか?

答えて

4

あなたのニーズが単純な場合はmemcached、またはredisのような機能セットがもう少し多い場合は、メモリ内のキャッシュを使用する方がよいでしょう。

+0

cpickleはスピードのために非常に遅く設計されています。 –

3

メモリ内の実際のデータベースを使用します。 pickle、cPickleまたはmarshalなどを使用しないでください。

1

redisは、すべてのデータを単純なキーと単純な値として表現しない限り、python objectのシリアル化を必要とするため、redisはこの問題を解決しません。 redisはデシリアライゼーションソリューションではなく、文字列のデータストアに過ぎません。どんな場合でも、redisは遅いオプションの1つです: https://charlesleifer.com/blog/completely-un-scientific-benchmarks-of-some-embedded-databases-with-python/

関連する問題