2015-03-05 1 views
0

В Matlab естьMatlab timeit эквивалент в Python для сценариев

«timeit (F), который измеряет типичное время (в секундах), необходимый для выполнения функции, заданной с помощью функции ручки F, которая не принимает никакого ввода аргумент «.

Этот метод возвращает медиану (я думаю, 13) пробегов функции.

Ознакомившись с методами time и timeit в Python, я не могу достаточно найти ничего, что позволит мне позвонить из консоли IPython, время мой сценарий (не функция) несколько раз, и вернуться либо в среднем или медиана.

Есть ли простой способ сделать это? или по крайней мере 1 раз, в результате чего я могу сделать свой собственный цикл и средний? Благодаря

ответ

1

Вы можете посмотреть по этой ссылке и рассмотрим %timeit магию IPython

link


Пример:

Допустим, вы определяете функцию вы хотите, чтобы тест:

def logtest1(N): 
tr=0. 
for i in xrange(N): 
    T= 40. + 10.*random() 
    tr = tr + -log(random())/T 

from timeit import Timer, timeit, repeat 
runningtime = repeat("logtest1(int(10e5))", setup="from __main__ import logtest1", repeat=5, number=1) 
print (runningtime) 

Это запустит мою функцию logtest1(int(10e5)) 1 раз и сохраните время в списке runningtime, то он повторит то же самое 5 раз и сохранит результаты в том же списке. Затем вы можете взять среднее значение медианы этого списка.

+0

Посмотрев на это, нет спецификации запуска скриптов из этого? Или я буду реализовывать это в скрипте? – mdj15

+0

Да, вы должны делать из сценария. Или, по крайней мере, загрузить скрипт в IPython, сделать его функцией и запустить ее так. Другой альтернативой было бы объединение магий Ipython% timeit% run test.py (при необходимости вы можете настроить параметры магии времени) – Esteban

+1

Я использовал '% timeit -n10% run test', который запускается для 10 циклов и 3 (по умолчанию, но изменен добавив '-r' после' -n') раз, и берет максимум из 3 прогонов 10 – mdj15

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

  • Нет связанных вопросов^_^