ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

代码运行时的内存问题(Python,Networkx)

2019-07-21 18:55:06  阅读:493  来源: 互联网

标签:python networkx


我制作了一个生成带有379613734边的图的代码.

但由于内存的原因,代码无法完成.当它通过6200万行时,它占用了大约97%的服务器内存.所以我杀了它.

你有什么想法解决这个问题吗?

我的代码是这样的:

import os, sys
import time
import networkx as nx


G = nx.Graph()

ptime = time.time()
j = 1

for line in open("./US_Health_Links.txt", 'r'):
#for line in open("./test_network.txt", 'r'):
    follower = line.strip().split()[0]
    followee = line.strip().split()[1]

    G.add_edge(follower, followee)

    if j%1000000 == 0:
        print j*1.0/1000000, "million lines done", time.time() - ptime
        ptime = time.time()
    j += 1

DG = G.to_directed()
#       P = nx.path_graph(DG)
Nn_G = G.number_of_nodes()
N_CC = nx.number_connected_components(G)
LCC = nx.connected_component_subgraphs(G)[0]
n_LCC = LCC.nodes()
Nn_LCC = LCC.number_of_nodes()
inDegree = DG.in_degree()
outDegree = DG.out_degree()
Density = nx.density(G)
#       Diameter = nx.diameter(G)
#       Centrality = nx.betweenness_centrality(PDG, normalized=True, weighted_edges=False)
#       Clustering = nx.average_clustering(G)

print "number of nodes in G\t" + str(Nn_G) + '\n' + "number of CC in G\t" + str(N_CC) + '\n' + "number of nodes in LCC\t" + str(Nn_LCC) + '\n' + "Density of G\t" + str(Density) + '\n'
#       sys.exit()
#   j += 1

边数据是这样的:

1000    1001
1000245    1020191
1000    10267352
1000653    10957902
1000    11039092
1000    1118691
10346    11882
1000    1228281
1000    1247041
1000    12965332
121340    13027572
1000    13075072
1000    13183162
1000    13250162
1214    13326292
1000    13452672
1000    13844892
1000    14061830
12340    1406481
1000    14134703
1000    14216951
1000    14254402
12134   14258044
1000    14270791
1000    14278978
12134    14313332
1000    14392970
1000    14441172
1000    14497568
1000    14502775
1000    14595635
1000    14620544
1000    14632615
10234    14680596
1000    14956164
10230    14998341
112000    15132211
1000    15145450
100    15285998
1000    15288974
1000    15300187
1000    1532061
1000    15326300

最后,有没有人有经验来分析Twitter链接数据?我很难采用有向图并计算平均/中位数的indegree和outdegree节点.任何帮助或想法?

解决方法:

首先,您应该考虑是否可以添加更多RAM.通过基于您拥有的数据进行计算或通过读取各种大小的数据的子样本来衡量内存使用情况,以衡量内存使用情况.几GB RAM的适度成本可以为您节省大量时间和麻烦.

其次,考虑是否需要实际构建整个图.例如,您可以通过迭代文件并计算来确定顶点的数量及其度数 – 您只需要在内存中一次保留一行,加上计数,这将比图表小很多.知道度数,您可以在找到最大连通分量时省略图中第一级的任何顶点,然后在之后校正省略的节点.您正在进行数据分析,而不是实现一些通用算法:学习有关数据的简单信息以实现更复杂的分析.

标签:python,networkx
来源: https://codeday.me/bug/20190721/1494782.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有