Я запускаю несколько алгоритмов машинного обучения со sklearn в цикле for и хочу посмотреть, сколько времени займет каждый из них. Проблема в том, что мне также нужно вернуть значение, и НЕ хочу запускать его более одного раза, потому что каждый алгоритм занимает так много времени. Есть ли способ зафиксировать возвращаемое значение 'clf' с помощью модуля timeit python или аналогичного с такой функцией...
def RandomForest(train_input, train_output):
clf = ensemble.RandomForestClassifier(n_estimators=10)
clf.fit(train_input, train_output)
return clf
когда я вызываю такую функцию
t = Timer(lambda : RandomForest(trainX,trainy))
print t.timeit(number=1)
P.S. Я также не хочу устанавливать глобальный «clf», потому что позже мне может понадобиться многопоточность или многопроцессорность.
timeit
, если вы заставляетеnumber=1
?timeit
полезен для автоматической обработки повторяющихся хронометражей, когда вы не знаете, сколько времени вы должны запускать функцию, чтобы получить хороший хронометраж и т. д. В вашем случае простое использованиеtime
было бы хорошо, и вы бы не Не нужно никакого взлома, чтобы получить возвращаемое значение. - person Bakuriu   schedule 18.07.2014time.time()
? Илиtime.clock()
? Модульtimeit
использует эти функции для выполнения таймингов. Если вам нужно выполнить только один тайминг, вы можете просто вызвать их напрямую, так же, как функция_timer
используется в ответе unutbu (на самом деле это ссылка наtime.time
илиtime.clock
в зависимости от ОС) . - person Bakuriu   schedule 18.07.2014