オブジェクトがa
とb
で、両方が参照オブジェクトobj
である場合、ピクルでオブジェクトを復元するとどうなりますか?ピンクのデータはa
とb
の両方が同じオブジェクトを参照し、それに応じてすべてを復元することを「知っていますか」、または2つの異なる—と最初は—というオブジェクトがありますか?Pickleは複数のオブジェクト参照を扱うことができます
7
A
答えて
7
はい、共有オブジェクトは1回だけシリアル化されます(ピクルプロトコルは循環参照を処理することさえできます)。 documentationから
:
pickle
モジュールは、同じオブジェクトへの以降の参照は が再びシリアライズされないように、それは、すでに シリアライズさを持っているオブジェクトを追跡します。marshal
はこれを行いません。これは、再帰オブジェクトとオブジェクト共有の両方に意味があります。 再帰オブジェクトは、自身への参照を含むオブジェクトです。 これらは
marshal
で処理されません。実際には、再帰オブジェクト をマーシャリングしようとすると、Pythonインタプリタがクラッシュします。オブジェクト共有 は、オブジェクト階層の異なる場所がシリアル化されている の同じオブジェクトへの複数の参照がある場合に発生します。pickle
は、そのようなオブジェクトを1回だけ格納し、他のすべての参照 がマスターコピーを指していることを保証します。共有オブジェクトは共有されたままです。変更可能なオブジェクトの場合は非常に重要です( )。
7
@aixが指摘しているように、pickle
は同じオブジェクトに対する複数の参照を理解していますが、単一の酸漬けでのみ理解できます。つまり、ピクルスは常に単一のオブジェクトをピクルスします。そのオブジェクトにそのオブジェクト内の参照がある場合、それらの参照は、unpickleオブジェクトで適切に共有されます。
しかし、pickleを2回呼び出して2つのオブジェクトをpickleすると、オブジェクト間の共有参照は適切に保存されません。オブジェクトは現在2回存在します。
関連する問題
- 1. 参照のためにFirebaseで複数のURLを扱う?
- 2. C#では複数のデータベースタイプを扱うことができますか?
- 3. Antennahouse Formatterは参照脚注をどのように扱うことができますか?
- 4. ptr-> operator *()では非参照を扱いますが、* ptrでは非参照を扱います
- 5. Railsアプリは複数のユーザを扱うことができません
- 6. ポインタへのconst参照はオブジェクトを変更することができます
- 7. 値と参照型オブジェクトを返すことができる汎用関数
- 8. 関数を引数としてオブジェクトのメソッドに渡すことができます。これはそのオブジェクトを参照できますか?
- 9. マッピング時に循環参照をどのように扱うことができますか?
- 10. JSオブジェクトまたは参照をJSオブジェクトにHTMLマークアップの関数に渡すことはできますか?
- 11. Wyは、変更可能/参照オブジェクトを考慮しないpickleですか?
- 12. 複数参照オブジェクトの解放
- 13. pickleオブジェクトを読み込んで特定の参照を解決する方法
- 14. CTEを複数回参照するときにオブジェクト名が無効
- 15. C#で複数のプロジェクトを参照するような別のプロジェクトでScrapyプロジェクトを参照できますか?
- 16. PHPで参照を間接参照することはできますか?
- 17. オブジェクトはJavaScriptでどのように参照できますか?
- 18. エンティティフレームワーク:IEntityChangeTrackerの複数のインスタンスでオブジェクトを参照できません
- 19. 複数のオブジェクトを扱うGWTサービス
- 20. 別のスコープで参照されたときのローカル変数の扱い方は?
- 21. MySQLクエリで変数を扱うことができません
- 22. AS3:ここではnullオブジェクト参照
- 23. オブジェクト参照変数の型が参照するオブジェクトの型と異なるJavaのメカニズムがありますか?
- 24. GroovyShellバインディングは、setVariableを実行するときにオブジェクトへの参照を渡すことができますか?
- 25. 「IEntityChangeTrackerの複数のインスタンスがエンティティオブジェクトを参照することはできません」を取り除く方法
- 26. メソッド参照と置き換えることができます
- 27. Pickle functoolsラッパーエラー:functools.KeyWrapperオブジェクトをpickleできません
- 28. Drupal 7カスタムテンプレートエラー:参照のみで変数を渡すことができます
- 29. whileループ:のみ参照エラーで変数を渡すことができます
- 30. 複数の参照は
これはクールです。 :D –