Pythonで次の論理演算を実行しようとしていますが、メモリと時間の問題が発生しています。私はPythonを初めて使用するので、問題を最適化する方法と場所に関するガイダンスをいただければ幸いです。(次の質問はやや抽象的なものであることを理解しています)
import networkx as nx
dic_score = {}
G = nx.watts_strogatz_graph(10000,10,.01) # Generate 2 graphs with 10,000 nodes using Networkx
H = nx.watts_strogatz_graph(10000,10,.01)
for Gnodes in G.nodes()
for Hnodes in H.nodes () # i.e. For all the pair of nodes in both the graphs
score = SomeOperation on (Gnodes,Hnodes) # Calculate a metric
dic_score.setdefault(Gnodes,[]).append([Hnodes, score, -1 ]) # Store the metric in the form a Key: value, where value become a list of lists, pair in a dictionary
次に、ここで説明した基準に従って、生成された辞書のリストを並べ替えます 。sorting_criterion
私の問題/質問は次のとおりです。
1)反復にforループを使用するよりも、これにアプローチするためのより良い方法はありますか?
2)上記の問題に取り組むための最も最適化された(最も速い)方法は何ですか?辞書以外のデータ構造の使用を検討する必要がありますか?またはおそらくファイル操作?
3)10,000個の値のリストに対応する10,000個のキーを持つこのディクショナリ内のリストを並べ替える必要があるため、メモリ要件がすぐに膨大になり、不足します。
3)辞書自体の計算内に並べ替えプロセスを統合する方法はありますか?つまり、並べ替えのために別のループを実行することを避けますか?
任意の入力をいただければ幸いです!ありがとう !