#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. Это отлично работает, ваше решение спасибо ..:) Но есть ли более элегантный способ сделать это?