Вывод времени и выхода Python

Можно ли использовать функцию timeit для вывода как результата функции, так и времени, которое требуется для обработки одновременно?

Сейчас я использую

timer = Timer('func()', 'from __main__ import func')
print timer.timeit(1)

Но это просто выводит время, а не выход программы, который возвращает что-то в конце. Я хочу, чтобы он выводил

FuncOutputGoesHere 13.2897528935

в той же строке.

В идеале, я хотел бы получить среднее значение для программы, выполнив ее N раз, а затем выведя результат программы и ее среднее время (всего один общий результат)

Ответ 1

Два варианта:

  • Включите 'print' в ваш запрограммированный код. Уродливо, но эй.

    timer = Timer('print func()', 'from __main__ import func')
    print timer.timeit(1)
    
  • Если все, что вы делаете, запускает вашу функцию один раз, а затем полностью обходимо с модулем timeit и время кода, используя тот же метод:

    import sys
    import time
    
    if sys.platform == "win32":
        # On Windows, the best timer is time.clock()
        default_timer = time.clock
    else:
        # On most other platforms the best timer is time.time()
        default_timer = time.time
    
    t0 = default_timer()
    output = func()
    t1 = default_timer()
    print output, t1 - t0
    

Если вы хотите запустить код несколько раз и произвести вывод, почему бы не запустить код за пределами функции timeit? Вы вызываете его более одного раза, а потом все равно:

    timer = Timer('func()', 'from __main__ import func')
    print timer.timeit(100),
    print func()

Ответ 2

Модуль timeit выполняет переданный оператор. Вы можете просто распечатать результат функции:

timer = Timer('print func()', 'from __main__ import func')
print timer.timeit(1)