Я сделал функцию, которая принимает почти 5 аргументов (входные данные (некоторые с плавающей точкой, некоторые с целыми числами)) и возвращает float. Я хочу найти максимальный результат этой функции, функция не просто математическая функция, она имеет много, если, elif условий в нем.
Однажды я сделал это, используя вложенные циклы, как показано ниже:
output = []
for a in input1:
for b in input2:
for c in input3:
for d in input4:
for e in input5:
output.append(f(a,b,c,d,e))
Input1
до Input5
- это NumPy массивы
Для этого подхода потребовалось 8 часов.
Мне пришлось запустить функцию 'f' в течение примерно 3 000 000 раз go через все варианты входных данных, чтобы найти максимальное значение 'f' для этих входных данных.
Я использовал multiprocessing
библиотеку, она почти вдвое сократила время, но все же было довольно долго почти 4 часа
Процессор: Intel® Core ™, процессор i7-4720HQ @ 2,60 ГГц, 2594 МГц, 4 ядра (-ей), 8 логических процессоров (-ей) Графический процессор: NVIDIA Geforce GTX 950M, Intel® HD Graphics 4600
Мне не удалось использовать GPU (я не уверен, поможет ли GPU сократить время)
Существует ли совсем другой подход для быстрого вычисления NumPy