Перечислите цикл медленный и превышающий мощность генератора python3 - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь работать с igraph с python, пытаясь добавить узел в сеть.Мой цикл перебирает список вершин.Моя проблема в том, что мой код работает медленно и не может завершиться.Это заканчивается ошибкой StopItate.Я не уверен, как это возможно.Предполагается, что V - это одна вершина, и цикл должен просто пройти последнюю вершину в списке и завершиться.

Как я могу ускорить мой код и избежать использования генератора?

actor_graph.add_vertex(kevin)
kevin_node=actor_graph.vcount()-1 # should be the last node. 
kevin_movies=list(full_imdb_data[full_imdb_data.nconst == kevin]   ['tconst'])
actor_graph.vs['nnid'][kevin_node]=kevin
actor_graph.vs['movies'][kevin_node]="_".join(list(kevin_movies))

for i,v in enumerate(actor_graph.vs):
    if v['nnid']==kevin:
        continue
#import pdb; pdb.set_trace()
movies2check =  list(imdb_data[imdb_data.nconst == next(v['nnid'])]['tconst'])
#full_imdb_data[full_imdb_data['category'].isin(['actor','self'])]
#import pdb; pdb.set_trace()

#list(imdb_data[imdb_data.nconst == next(v['nnid'])]['tconst'])
if movies2check is None:
    continue

moviesincommon= set(kevin_movies) & set(movies2check)

if len(moviesincommon)>0:
    print("added Edges ")
    actor_graph.add_edge(kevin_node,v)
    actor_graph.es[actor_graph.ecount()-1]['movies']="_".join(list(moviesincommon))
...