特定のオブジェクトをピクルすると、ピクル ファイルは予想よりも膨大になります (約 100MB、私は 100kB のようなものを予想していました)。このページactualsize
から使用すると、ほぼ同じサイズになるため、問題はピクルス自体にあるようには見えません。
基本的に、オブジェクトがリンクしている個々のオブジェクトのサイズの概要を取得したいので、ピクルされたファイルが非常に大きい理由がわかりました。
私はobjgraphを使ってこれを試しました
グラフを正常に作成するobjgraph というこのパッケージを使用してみましたが、「extra_node_attrs」パラメーターを使用して、その obj のサイズでノードに注釈を付けることさえできました。
objgraph.show_refs([my_object], filename='sample-graph.png', extra_node_attrs=lambda obj: dict(label=f"{obj.__class__.__name__}\n{sys.getsizeof(obj)} bytes"))
Image("sample-graph.png")
しかし、これはオブジェクトのツリーを示しており、全体のサイズはおそらく数十 kB で、100MB に近いものはありません。
extra_node_attrs を削除すると、一部のオブジェクトが実際には要素がグラフに含まれていないリストであることが示されます (補足: extra_node_attrs を使用してそれを表示する方法がわかりません)。したがって、objgraph は実際には完全ではありません。
オブジェクトがリンクしているすべてのオブジェクトの概要を作成するにはどうすればよいですか?