im new в python потоке, когда я печатаю вывод, кажется, что он работает параллельно. Также мои функции занимают то же время, что и перед использованием библиотеки concurrent.futures (ThreadPoolExecutor). Я должен рассчитать прирост некоторых атрибутов над набором данных (я не могу использовать библиотеки). Поскольку у меня есть около 1024 атрибутов, а выполнение функции заняло около минуты (и я должен использовать ее для итерации), я решил разделить массив attributes
на 10 (просто в качестве примера) и запустить separete. Функция gain(attribute)
отдельно для каждого подмассива. Итак, я сделал следующее (избегая лишних ненужных кодов):
def calculate_gains(self):
splited_attributes = np.array_split(self.attributes, 10)
result = {}
for atts in splited_attributes:
with concurrent.futures.ThreadPoolExecutor() as executor:
future = executor.submit(self.calculate_gains_helper, atts)
return_value = future.result()
self.gains = {**self.gains, **return_value}
Вот вот посчитанный_параметром:
def calculate_gains_helper(self, attributes):
inter_result = {}
for attribute in attributes:
inter_result[attribute] = self.gain(attribute)
return inter_result
Я что-то не так делаю? Я прочитал некоторые другие старые сообщения, но я не мог получить какую-либо информацию. Большое спасибо за любую помощь!