2014-10-12 6 views
1

Я знаю, что я могу использовать этотвремени функции и получить возвращаемое значение

from timeit import timeit 
test = lambda f: timeit(lambda:f(100), number=1) 
t1 = test(hello) 

Ко времени, как долго он принимает функцию hello для запуска с аргументом 100. Но предположим, что моя функция hello возвращает строку 'world', и я хочу сохранить это возвращаемое значение и также иметь время, необходимое для выполнения.

Можно ли это сделать?

+0

Что вы пытаетесь достичь здесь? Если вы устанавливаете 'number = 1',' timeit', вероятно, не подходит для вас. – jonrsharpe

+0

@jonrsharpe Я хочу, сколько времени потребуется для запуска 'hello (100)' once. Этот метод был лучшим ответом на сообщение, которое я получил. Не могли бы вы предложить, какой другой метод вы бы использовали, пожалуйста? Я не понимаю голосую ... – Juicy

+2

И что вы будете делать с возвращаемым значением? Если вы просто хотите убедиться, что это то, что вы ожидаете, рассмотрите 'assert'. – jonrsharpe

ответ

4

Если вы хотите просто задать конкретные вызовы для определенных функций, вы можете сделать следующее. Однако вы, вероятно, просто хотите использовать timeit или profile, чтобы получить более точное представление о том, что делает ваша программа.

Сделать функцию, которая выполняет функцию для вызова, записывает время, затем запускает функцию и возвращает значение и время дельта.

import time 


def timed(func, *args, **kwargs): 
    start = time.time() 
    out = func(*args, **kwargs) 

    return out, time.time() - start 


def my_func(value): 
    time.sleep(value) 
    return value 


print(timed(my_func(5))) # (5, 5.0050437450408936) 
+0

Спасибо, я думаю, что это то, что я хочу, я поиграю с ним и посмотрю на другие варианты и, возможно, вернусь и дам вам точку. Это будет менее точно, чем 'timeit' или не обязательно? – Juicy

+1

'timeit' агрегирует по нескольким тиражам, поэтому это будет более точная« средняя производительность ». Это скажет вам точное время одного запуска, но может не соответствовать другому прогону. – davidism

Смежные вопросы