我想在执行期间监视给定Python函数的进度(对于那些知道它的函数,来自机器学习包Scikit Learn的GridSearchCV
)。要做到这一点,假设函数有一个参数verbose
,我可以将详细程度设置为1或10,无论如何。但是,我也希望有一些时间监控。我的想法是每次在控制台中打印某些东西时在控制台上打印一个计时器(在这种情况下,打印将来自GridSearchCV
的详细程度的激活),让& #39; s称之为printing function
。
我的问题如下:
GridSearchCV
,printing function
)时,我担心会发生GridSearchCV
将完全执行,然后所有的计时器将在最后打印。有没有办法避免这种情况?答案 0 :(得分:0)
这可以通过将window.onbeforeunload = function() {
var x = doMyStaff();
return x;
};
function doMyStaff(){
console.log(new Date());
return "Check console there are Date!"
}
重定向到您自己的可以将信息添加到输出中的自定义类来实现。以下是如何实现这一目标的示例。我传入一个datetime对象作为参考来计算已经过了多长时间。然后当任何内容打印到stdout时,sys.stdout
被调用,然后我评估自参考时间以来经过了多长时间并将该信息插入到正在显示的文本中,然后使用初始标准输出显示它。
CustomStdout.write()
输出
import sys
import time
from datetime import datetime
class CustomStdout():
def __init__(self, start_time=None):
self.stdout = sys.stdout
self.start_time = start_time or datetime.now()
def write(self, text):
elapsed = datetime.now() - self.start_time
text = text.rstrip()
if len(text) == 0:
return
elapsed_str = '[%d.%03d seconds]' % (elapsed.seconds, elapsed.microseconds / 1000.)
self.stdout.write('%s %s\n' % (elapsed_str, text))
print 'Printing before stdout redirect'
# Redirect stdout
sys.stdout = CustomStdout()
print 'Stdout now redirected'
print 'About to sleep 5 seconds'
time.sleep(5)
print 'Slept 5 seconds'