Timeit Python. Как это работает?

#python #syntax #timer #timeit

#python #синтаксис #таймер #timeit

Вопрос:

Я хочу задать время для функции и хотел бы использовать библиотеку timeit. Я не могу найти ни одного хорошего примера в сети. Мне нужно время функции «largest_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’, на которую ссылаются перед назначением

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

Ответ №1:

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

Ответ №2:

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

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

Комментарии:

1. Это отлично работает, ваше решение спасибо ..:) Но есть ли более элегантный способ сделать это?