Как часть службы python, мне нужно выполнить некоторые вычисления для каждого запроса. Расчеты легко выполнить для массивов numpy, поэтому каждый раз, когда я получаю запрос, я создаю около 10 4D-массивов в библиотеке numpy с помощью функции array (). Я заметил, что это создание занимает несколько сотен мс. Есть ли способ ускорить его?
Размеры массивов имеют порядок [10, 10, 20, 50]. Общее количество элементов в 10 массивах составляет от 2 до 2,5 млн.
Я испробовал 2 метода для создания массива. Метод 1 создает 4D массивы на лету. Метод 2 создает массивы apriori и заполняет их данными для каждого запроса при обработке запросов.
start_numpy_conversion = time.perf_counter()
# method 1 - creating the numpy fresh for every query
fv_dict = {}
for key, value in input_dict.items():
fv_dict[key] = numpy.array(value)
# method 2 - using the same numpy array for every query
# fv_dict = self.input_dictionary
# for key, value in input_dict.items():
# fv_dict_value = fv_dict[key]
# # print("key {} shape {}".format(key, fv_dict_value.shape), flush=True)
# for first in range(len(value)):
# for second in range(len(value[first])):
# for third in range(len(value[first][second])):
# for fourth in range(len(value[first][second][third])):
# fv_dict_value[first, second, third, fourth] = value[first][second][third][fourth]
end_numpy_conversion = time.perf_counter()
В приведенном выше методе 1 требуется около 150 мс, а метод 2 - около 550 мс.
Поискнекоторая помощь в улучшении этого общего времени создания массива.