10

プログラムセッション間で複雑なPythonデータ構造を保存するための最良の手法に関するアドバイスを探しています。

これまでに私が思いついたテクニックのリストは次のとおりです。

  • ピクルス/チクル
  • json
  • jsonpickle
  • xml
  • データベース(SQLiteなど)

Pickleは最も簡単で最速の手法ですが、私の理解では、pickleの出力がPython 2.x / 3.xのさまざまなバージョン間、またはPythonの32ビットと64ビットの実装間で機能するという保証はありません。

Jsonは、単純なデータ構造に対してのみ機能します。Jsonpickleはこれを修正しているようで、Pythonのさまざまなバージョンで機能するように作成されているようです。

XMLまたはデータベースへのシリアル化は可能ですが、手動でシリアル化を行う必要があるため、余分な労力が必要になります。

ありがとう、マルコム

4

4 に答える 4

15

あなたはピクルスについて誤解しています:それらはPythonバージョン間で動作することが保証されています。気になるすべてのPythonバージョンでサポートされているプロトコルバージョンを選択するだけです。

省略した手法はマーシャルです。これは、Pythonバージョン間での動作が保証されていません(ところで、.pycファイルの記述方法です)。

于 2010-01-05T01:59:19.733 に答える
3

マーシャルモジュールとシェルフモジュールを省略しました。

また、このpythonドキュメントページは永続性について説明しています

于 2010-01-05T02:01:34.987 に答える
2

PySyckまたはpyYAMLを見たことがありますか?

于 2010-01-05T02:03:03.673 に答える
2

「最高」の基準は何ですか?

  • pickleほとんどのPython構造を実行できますが、深くネストされた構造も実行できます
  • sqlite dbsは簡単に照会できます(sqlを知っている場合:)
  • 速度/メモリ?自分で偽造していないベンチマークは信用しないでください。

(ファインプリント:
cPickle.dump(protocol = -1)は、1つのケースでは15Mピクルス/ 60M sqliteを圧縮しますが、壊れることがあります。
国名など、何度も発生する文字列は、予想よりも多くのメモリを消費する可能性があります。組み込みのインターンを参照してください。 ()。

于 2010-02-01T13:22:03.113 に答える