тайм-аут.переменная помогите другим импорта в Python
Я пытаюсь использовать timeit.timeit для того, чтобы узнать, сколько времени требуется для выполнения конкретной строки кода. Проблема в том, что эта строка содержит переменные, и мне нужно их как-то импортировать, поэтому мой вопрос-как? Для большей ясности код выглядит примерно так:
def func():
var1 = 'aaa'
var2 = 'aab'
t1 = timeit.timeit('var1==var2', 'from __main__ import ___', number = 10**4) # here I'm missing what to put after the import
Если бы я пытался выполнить этот код в __main__
, я бы просто импортировал переменную напрямую с 'from __main__ import var1, var2'
Есть ли решение для такого рода проблем?
2 ответа:
timeit.Timer
принимает вызываемый объект , а также строку в evalизменено в версии 2.6: параметры stmt и setup теперь могут также возьмем объекты, которые могут быть вызваны без аргументов. Это позволит встроить вызывает их в функции таймера, которая затем будет выполнена timeit (). Обратите внимание, что временные накладные расходы немного больше в этом дело из-за дополнительных вызовов функций.
(Также смотрите источник , ищите
elif hasattr(stmt, '__call__'):
).Создайте замыкание над переменными и передайте его в timeit:
def func(): var1 = 'aaa' var2 = 'aab' t1 = timeit.timeit(lambda: var1 == var2, number = 10**4)
Или эквивалентно:
def func(): var1 = 'aaa' var2 = 'aab' def closure(): return var1 == var2 t1 = timeit.timeit(closure, number = 10**4)