MemoryError
プログラムが使えるメモリ(作業用の記憶領域)が足りなくなったときに発生するエラーです。
原因
非常に大きなリストや配列を一度に作ろうとしたり、無限ループの中でデータを増やし続けたりすることが原因です。
エラーになるコード例
# 非常に大きなリストを一度に作ろうとする例(環境によってはMemoryErrorになる)
huge_list = [0] * (10 ** 12)修正版
# 一度に全部作らず、必要な分だけ順番に処理する(ジェネレータの活用など)
def generate_numbers(n):
for i in range(n):
yield i
for num in generate_numbers(10):
print(num)よくある間違い
- 本来は少しずつ処理すればよいデータを、一度にすべてメモリ上に載せようとしてしまう
- 無限ループやバグにより、リストや辞書にデータが際限なく追加され続けてしまう