我正在使用sklearn中的多个机器学习算法进行循环运算,并希望查看每个算法所需时间。但问题在于,我还需要返回一个值,并且不想再运行一次,因为每个算法都需要很长时间。是否有一种方法可以使用Python的timeit模块或类似的函数捕获返回值“clf”...
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)
PS:我也不想设置全局的“clf”,因为我可能以后需要进行多线程或多进程操作。
number=1
,为什么还要使用timeit
呢?timeit
的用处在于自动处理重复计时,当你不知道应该运行函数多长时间才能得到良好的计时等情况下非常有用。在你的情况下,简单地使用time
就可以了,而且你不需要任何技巧来获取返回值。 - Bakuriutime.time()
或者time.clock()
吗?timeit
模块使用这些函数来计算时间。如果您只需要进行一次计时操作,可以直接调用它们,就像unutbu
的回答中使用_timer
函数一样(实际上是引用了time.time()
或time.clock()
,取决于操作系统)。 - Bakuriu