Как вычислить параллельное пересечение узлов в Python?

#python

#python

Вопрос:

Я работаю с большими наборами данных, и для уменьшения времени выполнения мне нужно использовать параллельную обработку в python для вычисления пересечения двух узлов в графе. Я использую приведенный ниже код для вычисления пересечения для всех N узлов в моем наборе данных. nodes_neighbors является соседним набором узла, который состоит из нескольких узлов.

 for i in range(N):
    CN_sum = 0
    d = {}


        for neighbor in nodes_neighbors[i]:

            intersect = len(list(set(nodes_neighbors[i]) amp; set(nodes_neighbors[neighbor])))

            CN_sum = CN_sum   (intersect)


        node_importance.append(([i, CN_sum]))


  

Интересно, как я могу включить его для параллельного запуска, чтобы сэкономить время. Я попробовал какой-то метод, такой как создание пула () и многопроцессорная обработка, но, поскольку я немного новичок в python, я не смог этого сделать!!

Комментарии:

1. Вы можете сделать свой код намного быстрее, сохраняя наборы, а не любые коллекции, которые у вас есть в данный момент nodes_neighbors , а затем intersect = sum(1 for c in nodes_neigbors[i] if c in nodes_neighbors[neighbor]) . В настоящее время вы создаете 2 набора и список на каждой итерации.

2. Может быть еще быстрее не использовать наборы, а вместо этого отсортировать списки и подсчитать пересечение, используя подход типа сортировки слиянием.