#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. Может быть еще быстрее не использовать наборы, а вместо этого отсортировать списки и подсчитать пересечение, используя подход типа сортировки слиянием.