我想测量用户做出决定所需的时间(或者在这种情况下只需按“提交”按钮)。在python本身,我通常测量代码的时间
start_time = time.clock()
time_diff = start_time - time.clock()
但是,在Web应用程序中,我无法理解它应该如何工作。
@app.route('/survey')
def main():
user = request.cookies.get('user')
if not user:
return redirect(url_for('login'))
msg = ''
word = request.args.get('word')
score = request.args.get('score')
start_time = time.clock()
if score:
time_diff = start_time - time.clock()
record_to_csv(user, word, score, time_diff)
return render_template(
'main.html',
self_url=url_for('main'),
word=choice(words),
msg=msg,
)
我的第一个想法是将start_time放在“if score”之前,然后测量之后的时间。但不知何故,我总是得到-4.10546782348e-07的同一时间。所以我想知道问题是我没有将时间测量放在循环中的正确位置,或者它是否是一个完全错误的方法。任何评论都非常感谢。
您可以在会话中持有start_time
,并在发布请求后进行检查:
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
time_diff = time.clock() - session.get('start_time', 0)
print time_diff
session['start_time'] = time.clock()
return render_template('index.html')
否则,每次请求后都会失去这种可传播性。
所以我把开始时间测量放在外面,然后在“if score”之后测量差异。像这样我得到累积时间,这就是为什么我总是减去上一步的时间。似乎工作。我还将time.clock()函数更改为time.time()。
start = time.time()
previous_difference = []
previous_difference.append(0)
@app.route('/survey')
def main():
user = request.cookies.get('user')
if not user:
return redirect(url_for('login'))
msg = ''
word = request.args.get('word')
score = request.args.get('score')
start_time = time.clock()
if score:
diff = end - start
time_diff = diff - previous_difference[-1]
previous_difference.append(diff)
record_to_csv(user, word, score, time_diff)
return render_template(
'main.html',
self_url=url_for('main'),
word=choice(words),
msg=msg,
)