Я имею дело с сеткой сетки 100x100
. Я хочу определить его global efficiency, чтобы узнать, насколько эффективно обмен информацией в нем.Python: ошибка памяти с глобальной эффективностью (networkx)
Я использую специальную функцию для вычисления эффективности, а затем применяю ее к своей сети.
Однако я столкнулся с Memory Error
, который указывает на линию, где вызывается функция (последняя строка). Это зависит от того, сколько RAM Python использует? Как я могу это исправить?
Код выглядит следующим образом:
from __future__ import print_function, division
import numpy
from numpy import *
import networkx as nx
import matplotlib.pyplot as plt
import csv
from collections import *
import os
import glob
from collections import OrderedDict
def global_efficiency(G, weight=None):
N = len(G)
if N < 2:
return 0
inv_lengths = []
for node in G:
if weight is None:
lengths = nx.single_source_shortest_path_length(G, node)
else:
lengths=nx.single_source_dijkstra_path_length(G,node,weight=weight)
inv = [1/x for x in lengths.values() if x is not 0]
inv_lengths.extend(inv)
return sum(inv_lengths)/(N*(N-1))
N=100
G=nx.grid_2d_graph(N,N)
pos = dict((n, n) for n in G.nodes())
labels = dict(((i, j), i + (N-1-j) * N) for i, j in G.nodes())
nx.relabel_nodes(G,labels,False)
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
nx.draw_networkx(G, pos=pos2, with_labels=False, node_size = 10)
eff=global_efficiency(G)
Yup, извините. Немного мусора ... теперь это исправлено. – FaCoffee
Можете ли вы предоставить фактическое сообщение об ошибке? – Joel
ну, он просто говорит: 'Ошибка памяти:', а затем пробелы – FaCoffee