Je suis en train d'examiner un système de travail pour identifier les zones qui peuvent être optimisées. J'ai trouvé que la boucle augmente en dessous de la durée de fonctionnement d'environ 70%Mise à jour de la capacité en python igraph
for t in G.get_edgelist():
eid = G.get_eid(*t)
origin = G.vs[t[0]]['name']
destin = G.vs[t[1]]['name']
if fc.cpdict[origin]['node_type'] == 'dependency':
cp_func[nodes.index(destin)] *= cp_func[nodes.index(origin)]
cap = cp_func[nodes.index(origin)]
G.es[eid]["capacity"] = cap
Le système a besoin de mettre à jour la capacité des bords qui ont changé depuis la dernière itération du temps de modèle. Dans why-is-add-edge-function-so-slow-ompared-to-add-edges, une réponse indique
La raison est que igraph utilise une liste de bords indexés comme structure de données dans la couche C. L'index permet d'interroger les voisins d'un sommet spécifique en temps constant. C'est bon si votre graphique change rarement, mais cela devient un fardeau quand les opérations de modification sont beaucoup plus fréquentes que les requêtes, puisque chaque fois que vous ajoutez ou supprimez un bord, vous devez mettre à jour l'index.
Existe-t-il une meilleure façon de faire cette mise à jour.