2010-07-26 2 views
0

Hii! Я хочу получить время выполнения моей функции (тест (G)). когда я использование таймера Мне нужно написать тип моего объекта: «test (% ??)»% G , который здесь DiGraph. Как я могу это сделать?TypeError при переходе по 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)) 

ответ

1

Вы должны импортировать G из __main__ а

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)) 

Обратите внимание, что я фиксированный оператор импорта также.

+0

Спасибо! Это странно, потому что я должен был также зафиксировать оператор импорта, чтобы он работал. Но в чем разница между «from networkx import nx» и «import networkx as nx» ?? – masti

+0

'from networkx import nx' означает, что модуль' networkx' должен _contain_ использовать функцию 'nx'. Но вы не хотите этого, вы хотите вызвать модуль _itself_ 'nx'. – katrielalex