Что может быть лучшим подходом для нескольких итераций в python для более быстрого вывода - PullRequest
0 голосов
/ 20 апреля 2020

Я сделал функцию, которая принимает почти 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...