arange
возвращает пустой массив.
Если мы перейдем от 0.01e10
к 100e10
с шагом 0.5
, в вашем массиве будет приблизительно 200e10
элементов. Поскольку эти числа имеют двойную точность (64 бита или 8 байт) на элемент, вам потребуется 16 ТБ ОЗУ.
Лучшей идеей было бы изменить ваш алгоритм. Например, если вы используете его в цикле for. например:
for t in np.arange(0.01*1e10,100*1e10,0.5):
do_simulationstep(t)
Изменение использования range
в python3 или xrange
в python2 означает, что этот массив будет создан на лету с использованием генератора .
for t in range(0.01*1e10,100*1e10,0.5):
do_simulationstep(t)
Как отмечено в комментариях, однако, это не будет работать.
Range будет работать только с целыми числами, поэтому нам придется масштабировать диапазон, чтобы использовать целые числа, а затем снова масштабировать результат:
for t in (x*0.5 for x in range(int(1e8/0.5),int(1e12/0.5))):
do_simulationstep(t)
Однако, если вам действительно необходим такой большой объем памяти, то я думаю, что amazon сдает в аренду сервер, который может его поддерживать:
Обновление обработки в памяти EC2: экземпляры с объемом памяти от 4 до 16 ТБ + масштабируемый SAP HANA до 34 ТБ