Timeit Python.Как это работает? - PullRequest
1 голос
/ 02 ноября 2011

Я хочу назначить время функции, и я бы хотел использовать библиотеку timeit.Я не могу найти хороший пример в сети.Мне нужно синхронизировать функцию "large_eigenvector", которая находится в библиотеке maxcut, эта функция принимает в качестве входных данных граф G, который возвращается функцией из библиотеки networkx.

Так что я хочу синхронизировать этот блок кода:

import maxcut as mc 
import networkx as nx 
G = nx.complete_graph(3)

mc.largest_eigenvector(G)

Это, очевидно, работает нормально.Затем я сделал это:

s = """
    import maxcut as mc 
    import networkx as nx 
    G = nx.complete_graph(3)
    """
t = timeit.Timer(s, 'mc.largest_eigenvector(G)')

Но там написано: UnboundLocalError: локальная переменная 'mc', на которую есть ссылка перед присваиванием

Я не знаю почему.Пожалуйста, кто-нибудь, помогите, это просто проблема синтаксиса, и я не могу найти достойную документацию для этого.

Ответы [ 2 ]

4 голосов
/ 02 ноября 2011

У вас есть оператор и настройки поменялись местами.Передайте аргументы Timer () наоборот.

2 голосов
/ 02 ноября 2011

Попробуйте это:

def tmp():
    import maxcut as mc 
    import networkx as nx 
    G = nx.complete_graph(3)
    mc.largest_eigenvector(G)

t = timeit.Timer(s, 'tmp()')

Также может работать следующее:

t = timeit.Timer(setup=s, stmt='mc.largest_eigenvector(G)')
...