Альтернатива Nested L oop и функция внутри него в python - PullRequest
0 голосов
/ 28 апреля 2020

Я хочу обновить свой код, так как алгоритм занимает 17 часов для вычисления. Я попробовал несколько методов, но не сработало. Не могли бы вы предложить мне любую альтернативу кода, чтобы сэкономить время?

%% time

# test algorithm1 - fuzzy
matched_pair = []
for x in dataset1['full_name_eng']:
    for y in dataset2['name']:
        if (fuzz.token_sort_ratio(x,y) > 85):
            matched_pair.append((x,y))
            print((x,y))

Я сравниваю имена из 2 столбцов набора данных и нахожу подходящую пару.

1 Ответ

0 голосов
/ 28 апреля 2020

Одна возможность - ввести параллельную обработку. В настоящее время это однопоточный код, поэтому он использует не все доступные ресурсы процессора. Если у вас есть 4 или 8 ядер, вы должны увидеть значительное улучшение от распределения вычислений по всем из них.

У меня нет большого опыта с этим в Python. Вот введение в один из подходов: Параллельная обработка в python

В вашем случае вы можете написать функцию, которая сравнивает одно значение с каждым значением в y. Затем сопоставьте эту функцию с x, используя инфраструктуру параллельной обработки.

...