Мне нужно производить большие и большие (очень) матрицы (цепи Маркова) для научных целей. Я выполняю расчет, который помещаю в список из 20301 элемента (= одна строка моей матрицы). Мне нужны все эти данные в памяти, чтобы перейти к следующему шагу Маркова, но я могу сохранить их в другом месте (например, в файле), если необходимо, даже если это замедлит прохождение моей цепи Маркова. Мой компьютер (научная лаборатория): биксеноновый 6 ядер / 12 потоков каждый, 12 ГБ памяти, ОС: win64
Traceback (most recent call last):
File "my_file.py", line 247, in <module>
ListTemp.append(calculus)
MemoryError
Пример результатов расчета: 9.233747520008198e-102 (да, больше 1/9000)
Ошибка возникает при сохранении 19766-го элемента:
ListTemp[19766]
1.4509421012263216e-103
Если я пойду дальше
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
ListTemp[19767]
IndexError: list index out of range
Итак, в этом списке была ошибка памяти в цикле 19767 года.
Вопросов:
Есть ли ограничение памяти для списка? Это ограничение по списку или глобальное ограничение по сценариям?
Как обойти эти ограничения? Есть какие-нибудь возможности?
Поможет ли использовать numpy, python64? Какие у них ограничения памяти? А как насчет других языков?