入力リストには100万を超える数字を使用できます。小さな「繰り返し」を使って次のコードを実行すると、その罰金がかかります。Python 3.1 - 大きなリストのサンプリング中のメモリエラー
def sample(x):
length = 1000000
new_array = random.sample((list(x)),length)
return (new_array)
def repeat_sample(x):
i = 0
repeats = 100
list_of_samples = []
for i in range(repeats):
list_of_samples.append(sample(x))
return(list_of_samples)
repeat_sample(large_array)
しかしながら、例えば上記100のような高反復を使用して、MemoryError
もたらします。トレースバックは以下の通りです。
Traceback (most recent call last):
File "C:\Python31\rnd.py", line 221, in <module>
STORED_REPEAT_SAMPLE = repeat_sample(STORED_ARRAY)
File "C:\Python31\rnd.py", line 129, in repeat_sample
list_of_samples.append(sample(x))
File "C:\Python31\rnd.py", line 121, in sample
new_array = random.sample((list(x)),length)
File "C:\Python31\lib\random.py", line 309, in sample
result = [None] * k
MemoryError
私はメモリが不足していると想定しています。私はこの問題を回避する方法を知らない。
ありがとうございました!
をより多くのメモリを取得しますか? – SilentGhost
アルゴリズムを変更しますか?どのサンプルが使用されていますか?それぞれのサンプルの後で、ビットで少しずつ行うことはできませんか? – TryPyPy
システムを再構成して仮想メモリを増やすことができます。これは通常、ハードディスクの空き容量が増えることを意味します。 – martineau