2010-07-26 19 views
0

Hii! Je veux obtenir l'exécution de ma fonction dans le temps (test (G)). quand je utiliser Timer j'ai besoin d'écrire le type de mon objet: "test (% ??)"% G qui est DiGraph ici. Comment puis je faire ça?TypeError lors de la répétition sur DiGraph()

from networkx import nx 

def test(G): 
    for e in G.edges_iter(): 
     print(e) 

if __name__=='__main__': 
    from timeit import Timer 
    G = nx.DiGraph() 
    G.add_edges_from([(1,2),(4,5)]) 
    t = Timer("test(% ??)"%G,"from __main__ import test") 
    print(t.timeit(1)) 

Répondre

1

Vous devez importer G de __main__ ainsi

import networkx as nx 

def test(G): 
    for e in G.edges_iter(): 
     print(e) 

if __name__=='__main__': 
    from timeit import Timer 
    G = nx.DiGraph() 
    G.add_edges_from([(1,2),(4,5)]) 
    t = Timer("test(G)","from __main__ import test,G") 
    print(t.timeit(1)) 

Notez que je fixe la déclaration d'importation aussi.

+0

Merci! C'est bizarre parce que j'ai dû aussi corriger la déclaration d'importation pour que ça marche. Mais quelle est la différence entre "from networkx import nx" et "import networkx as nx" ?? – masti

+0

'de networkx import nx' signifie que le module' networkx' devrait contenir _contain_ une fonction 'nx'. Mais vous ne voulez pas cela, vous voulez appeler le module _itself_ 'nx'. – katrielalex