Могу ли я создать «глобальный», полностью связанный граф в Python, который одновременно обновляется от одновременных рабPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Могу ли я создать «глобальный», полностью связанный граф в Python, который одновременно обновляется от одновременных раб

Сообщение Anonymous »

Я хочу параллельно построить полностью связный граф в Python, а также получить список значений ребер, например:

Код: Выделить всё

( node1, node2 ) = edge_value
хранится в формате словаря:

Код: Выделить всё

{ ( node1, node2 ) : edge_value [, ... [, ... ] ] }
Для этого мне нужно сначала инициализировать два [/b] переменные, G для графика и f_correlation для указанного словаря

Код: Выделить всё

import networkx as nx
from multiprocessing import Pool
G = nx.Graph()
f_correlation = {}
Затем создается функция для построения графика, а также сохраняется

Код: Выделить всё

( node1, node2 ) = edge_value
в словарь f_correlation:

Код: Выделить всё

def construct_graph_parallelly(pair_with_df):
global G
global f_correlation
pair, df = pair_with_df
i, j = pair
# calculate the edge value and store it in the global variable f_correlation
f_correlation[ (i, j) ] = calculate_value(df, i, j)    # this function calculate some value on the dataframe
# here i, j are node in the graph
G.add_edge(i, j, weight = f_correlation[ (i, j) ])
return f_correlation
Затем создается экземпляр multiprocessing.Pool() и выполняется вызов его метода .map(), чтобы позволить коду выполняться одновременно:

Код: Выделить всё

def make_all_pair_with_df(node_list, df):
all_pair_with_df = []
for i in node_list:
for j in node_list:
if i != j :
pair_with_df = (i,j),df
all_pair_with_df.append(pair_with_df)

return all_pair_with_df

node_list = ['a', 'b', 'c', 'd', 'e']
pool = Pool()
all_pair_with_df = make_all_pair_with_df(node_list, df)
f_correlation = pool.map(construct_graph_parallelly, all_pair_with_df)
pool.close()
print("DONE")
Но когда я запускаю код, он работает бесконечно, никогда не печатает «DONE»
Одной из проблем может быть Проблема с переменными, обсуждаемая в разделах «Глобальные переменные и многопроцессорность Python».
Но для моей работы мне нужно обновить словарь и Связанный граф
Strong> во всем мире.
Как я могу это сделать или какие изменения мне следует внести, чтобы это работало?

Подробнее здесь: https://stackoverflow.com/questions/650 ... rently-upd
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»