【发布时间】:2011-11-30 01:50:41
【问题描述】:
我有两个字典对象,连接和网络。这可以可视化为一个图,其中每个节点都是一台计算机,连接描绘了计算机和节点之间的一条边。网络是唯一网络的字典对象,计算机可以成为其中的一部分,例如
1,2
2,3
4,5
5,1
是节点 1 到 1 的四个连接信息
因此,连接将是 {1->1,2->1,3->1,4->2,5->1}
和网络 {1->0,2->1}
这意味着
计算机 1、2、3、5 是 n/w 1 的一部分
计算机 4 是 n/w 2 的一部分
再次 n/w 2 与 n/w 1 互连
我必须读取包含数千个此类连接信息的文件
这样做时,对于读取的每个连接信息,我必须执行一个非顺序循环,如下所示
while network.has_key(connections[node1]):
connections[node1]=network[connections[node1]]
有没有更好的方法来优化上述循环?如果需要,我可以为此目的分享我的整个代码
【问题讨论】:
-
“非顺序循环”是什么意思?据推测,您正在按顺序读取单个文件,我假设这是您的瓶颈。
-
你有没有想过分析你的代码? CProfile 很棒 docs.python.org/library/profile.html - 之后您将清楚地了解您的瓶颈是什么
-
@oxtopus,请检查代码 sn-p。非顺序意味着我既不能使用列表理解,也不能使用任何列表函数,如 reduce ...
-
@savinos,是的,我试过了,这就是我识别上述代码 sn-p 的方式
标签: python optimization loops nonsequential