Pythonにおけるメモリ利用について
Q&A
Closed
解決したいこと
Pythonにおける各オブジェクトのメモリ仕様について疑問があり質問させていただきました。
google colaboratoryにおいて、itertoolsを用いて母数が大きい順列を列挙する場合、
itertools.permutations objectを生成することは可能なのにもかかわらず
それをlist()を用いてリスト化しようとするとRAMが不足しクラッシュしてしまいます。
例えば
import itertools
l = [i for i in range(100)]
all_permutation = itertools.permutations(l,5)
上記コードの場合処理は正常に終了しますが
import itertools
l = [i for i in range(100)]
all_permutation = list(itertools.permutations(l,5))
とすると
使用可能な RAM をすべて使用した後で、セッションがクラッシュしました。
となります。
itertools.permutations objectでもそれをリスト化したものでも保存されている順列数と中身は変わらない様に思えるのですが、どういった差でメモリの使用量が変化しているのでしょうか。
端的な回答でなくても、こういったワードで調べて理解を深めればよいといったアドバイスでもよいのでご教授願います。
初学者であり稚拙な文、質問である点ご容赦ください。