В списке ввода может быть более 1 миллиона номеров. Когда я запускаю следующий код с меньшими «повторами», его штраф;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 выглядит следующим образом.
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