#python #arrays #python-3.x #numpy #kill-process
Вопрос:
Я пытаюсь заполнить массив размером 2 ^ 32, и на определенном этапе заполнения он выдает, что процесс был остановлен
def MakeArr(n): start_time = time.time() arr = np.random.randint(1, 2**n, size=2**n, dtype=np.int64) print(arr) print("Time to create: %s sec" % (time.time() - start_time)) print("arr len:" str(len(arr))) return arr sys.setrecursionlimit(1500); n = 32; arr = MakeArr(n)
Комментарии:
1. У вас есть 16 ГБ памяти, необходимые для выделения этого массива?
2. откройте диспетчер задач и следите за использованием оперативной памяти
Ответ №1:
Массив 2^32 может быть слишком большим для обработки python или numpy. Возможно, вы сможете получить больший массив, изменив тип dtype на более низкий, например np.int8
.
Комментарии:
1. Это работает, но есть ли способ увеличить диапазон случайных чисел?
2. Существует компромисс между тем, насколько велик ваш массив, и тем, насколько большими могут быть ваши числа. Вы ограничены объемом имеющейся у вас памяти
3. Теперь я понимаю, спасибо
4. Вы могли бы, вероятно, получить еще какое-то значение, используя NumPy uint. Они не допускают отрицательных чисел, но, таким образом, диапазон в два раза лучше
5. Понял, я постараюсь